This question already has answers here:
Is floating point math broken?
(31个答案)
去年关门了。
我的应用程序中有一个func,它可以修剪数字,例如9.81->9.8。但在更新之后,swift的行为发生了变化。
请建议如何解决这个问题。可能是斯威夫特的虫子吗?
它在
(31个答案)
去年关门了。
我的应用程序中有一个func,它可以修剪数字,例如9.81->9.8。但在更新之后,swift的行为发生了变化。
let myNum = 9.7
print(round(myNum / 0.1) * 0.1)
Swift 4.1.2 output - 9.7
Swift 4.2 output - 9.700000000000001
请建议如何解决这个问题。可能是斯威夫特的虫子吗?
最佳答案
如果您需要正确的值本身,而不仅仅是一个String
表示,您可以尝试这样做。
let value = 9.71
let roundedValue = round(value * 10) / 10
print(roundedValue)
它在
9.7
上打印Swift 4.2
,所以我猜舍入值是正确的,您可以使用它进行其他计算。关于swift - Swift 4.2舍入函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52402642/