Swift 499.289999996->;499.28如何在不舍入小数点的情况下删除小数点?
当你有下面的代码时 结果应该是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可获
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