我正试图通过将输入数字转换为字符串,然后再转换回双精度,将数字四舍五入到小数点后的7位。字符串的值是我想要的,但当将其转换回两位数时,会显示更多的小数位数。对这种情况有什么补救措施吗?
let inputNumber: Double = 99.99990338164251
let roundedString = String(format: "%.7f", inputNumber) //"99.9999034"
let outputNumber = Double(roundedString) //99.99990339999999
使用Decimal
类而不是Double
https://developer.apple.com/documentation/foundation/decimal
你的问题是一个常见的浮点数计算
ObjC类的详细信息https://developer.apple.com/documentation/foundation/nsdecimalnumber