在Swift中将String转换为Double会显示额外的小数位数



我正试图通过将输入数字转换为字符串,然后再转换回双精度,将数字四舍五入到小数点后的7位。字符串的值是我想要的,但当将其转换回两位数时,会显示更多的小数位数。对这种情况有什么补救措施吗?

let inputNumber: Double = 99.99990338164251
let roundedString = String(format: "%.7f", inputNumber) //"99.9999034"
let outputNumber = Double(roundedString) //99.99990339999999

使用Decimal类而不是Doublehttps://developer.apple.com/documentation/foundation/decimal

你的问题是一个常见的浮点数计算

ObjC类的详细信息https://developer.apple.com/documentation/foundation/nsdecimalnumber

最新更新