gpt4 book ai didi

ios - NSDecimalNumber 问题

转载 作者:行者123 更新时间:2023-11-29 02:17:38 26 4
gpt4 key购买 nike

在我的 iOS swift 应用程序中,我从网络上收到一些 json,其中包含一些代表货币的 double 值。它看起来像这样:

[{"Amount": 5.0},{"Amount":-26.07},{"Amount": 4}, ...etc]

我将它们转换为 Double,然后尝试将这些值作为 Swift“Double”提供给 NSDecimalNumber 的构造函数,如下所示:

let amount = NSDecimalNumber(double: amountAsDouble)

我在使用这种方法时遇到了问题,因为我创建的 NSDecimalNumber 经常会包含一个不同的数字,小数点后 16 位。

let amount = NSDecimalNumber(double: -15.97)
println(amount)

返回 -15.970000000000004096

我不想要这个,我想要 -15.97。谢谢,

最佳答案

Double 以 18 位十进制数字存储,您对此无能为力,它就是这样工作的。

阅读此处:http://en.wikipedia.org/wiki/Double-precision_floating-point_format

但是,在屏幕上显示值时,您可以像这样使用 NSNumberFormatter:

let amountInDouble: Double = -15.970000000000004096

let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
formatter.roundingIncrement = 0.01
formatter.maximumFractionDigits = 2

let amountAsString = formatter.stringFromNumber(NSNumber(double: amountInDouble))

if let amountAsString = amountAsString {
println(amountAsString) // -15.97
}

关于ios - NSDecimalNumber 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28569649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com