【发布时间】:2018-11-12 07:03:02
【问题描述】:
这是我的代码
let ns = NumberFormatter.init()
ns.allowsFloats = true
ns.maximumFractionDigits = 18 //This is a variable value
ns.minimumFractionDigits = 18 //This is a variable value
ns.roundingMode = .floor
ns.numberStyle = .decimal
let doubleValueOfDecimal : Double = 12.95699999999998
let numb = NSNumber.init(value: doubleValueOfDecimal)
print(numb)
let string = ns.string(from: numb)
print(string)
以下是输出和输入
doubleValueOfDecimal = 2.95699999999998
Output
2.95699999999998
Optional("2.956999999999980000")
但是如果我输入
doubleValueOfDecimal = 12.95699999999998
输出是
12.95699999999998
Optional("12.957000000000000000")
字符串转换对值进行四舍五入。 有人可以解释一下这是如何工作的吗?
当我希望它显示确切的数字时,字符串转换会将小数位四舍五入。
【问题讨论】:
-
您能否编辑您的问题并添加
doubleValueOfDecimal的声明和推断类型(如果它不明确)?
标签: ios swift decimal nsnumberformatter nsdecimalnumber