有什么方法可以将 Double 转换为 NSNumber 并在 Swift 中将精度保持在至少 6 位小数?

Is there any way to convert from Double to NSNumber and maintain accuracy down to at least 6 decimal places in Swift?

我使用 GetSetDouble 作为 NSNumber 存储到核心数据中。在这个转换过程中是这样的。

var number {
    get { 
        return coreDataNumber.double
    }
    set {
    coreDataNumber = NSNumber(double: newValue!)
    }
}

如果语法错误,那与我的问题无关,我只是现在不在 Mac 上。我最终得出结论,保持转换准确性的唯一方法是使用 String 来存储 Double。我可以使用这种方法,但就我未来的知识而言,有没有办法防止像 0.003459 这样的数字在您检索时变成 0.0034589999999999999999?这不是我发现的唯一转换错误。有时它会在我不想要的时候变圆。我知道这可能与并非所有十进制值都可以用二进制正确表示有关。如果有一种方法可以在不损失准确性的情况下进行转换,我将不胜感激。

精度远高于6位小数。

使用您的号码: 0.003459 - 0.0034589999999999999999 = 1e-22

问题在于格式化功能(或缺少)。