我想将字符串转换为double并保持相同的值:
let myStr = "2.40"
let numberFormatter = NSNumberFormatter()
numberFormatter.locale = NSLocale(localeIdentifier: "fr_FR")
let myDouble = numberFormatter.numberFromString(myStr)?.doubleValue ?? 0.0
myDouble现在是
Double? 2.3999999999999999
那么如何转换" 2.40"精确到2.40为双??
更新
转换后即使舍入似乎也不起作用
我不想打印,我想计算一下,这个数字应该是正确的,它的资金计算和费率
答案 0 :(得分:6)
首先关闭:你不要!你在这里遇到的是浮点不准确。计算机无法准确存储每个数字。 2.4
无法在浮点类型中无损存储。
其次:由于浮动点总是一个问题,你在这里处理钱(我猜你试图存储2.4法郎)你的头号解决方案是:不使用浮点数。使用您从NSNumber
获得的numberFromString
,并且不要试图从中获取Double
。
或者,将逗号移位并将其存储为Int
。
第一个解决方案可能类似于:
if let num = myDouble {
let value = NSDecimalNumber(decimal: num.decimalValue)
let output = value.decimalNumberByMultiplyingBy(NSDecimalNumber(integer: 10))
}