Swift 499.289999996->;499.28如何在不舍入小数点的情况下删除小数点?

Swift 499.289999996->;499.28如何在不舍入小数点的情况下删除小数点?,swift,Swift,当你有下面的代码时 结果应该是499.28 如何在不舍入小数点的情况下删除小数点 var tmp:Double = 499.28999999999996 print(tmp.someFunction()) //-> 499.28 String 谢谢。您可以使用floor()功能并进行一些缩放,以达到您想要的效果: var tmp:Double = 499.28999999999996 floor(tmp * 100) / 100 //returns 499.28 使用Float80可获

当你有下面的代码时

结果应该是499.28

如何在不舍入小数点的情况下删除小数点

var tmp:Double = 499.28999999999996
print(tmp.someFunction()) //-> 499.28 String

谢谢。

您可以使用
floor()
功能并进行一些缩放,以达到您想要的效果:

var tmp:Double = 499.28999999999996
floor(tmp * 100) / 100 //returns 499.28

使用
Float80
可获得更高的精度:

var tmp: Float80 = 499.28999999999996

let times100 = tmp * 100

let noFraction =  times100 - times100.truncatingRemainder(dividingBy: 1)

tmp = noFraction/100

print(tmp)   //499.28

这将给出负数打印的错误结果(地板(tmp*100)/100)=>结果499.29良好点。如果数字为负数,可以通过分支来解决这个问题,对值的abs()进行运算,然后乘以-1。但我不确定我是否喜欢这个答案。我建议在你的问题中添加一个负数的例子,以避免重复得到相同的答案。埃里克·M·约翰逊-Thanks@Albert不是我的电脑。一定要在一个小房间里试试playground@Albert您是否已将类型更改为
Float80
?很好~。谢谢Float80的结果是499.28