有谁能告诉我如何在Swift中将一个双精度值四舍五入到小数点后的x位吗?
我有:
var totalWorkTimeInHours = (totalWorkTime/60/60)
totalWorkTime
是秒的NSTimeInterval(双精度).
totalWorkTimeInHours
会给我时间,但它会给我一个很长的精确数字,比如1.543240952039......
当我打印totalWorkTimeInHours
时,我该如何将其舍入到1.543?
有谁能告诉我如何在Swift中将一个双精度值四舍五入到小数点后的x位吗?
我有:
var totalWorkTimeInHours = (totalWorkTime/60/60)
totalWorkTime
是秒的NSTimeInterval(双精度).
totalWorkTimeInHours
会给我时间,但它会给我一个很长的精确数字,比如1.543240952039......
当我打印totalWorkTimeInHours
时,我该如何将其舍入到1.543?
您可以使用Swift的round
函数来实现这一点.
要以3位精度对Double
进行四舍五入,首先将其乘以Double
0,四舍五入并将四舍五入结果除以Double
0:
let x = 1.23556789
let y = Double(round(1000 * x) / 1000)
print(y) /// 1.236
与任何类型的printf(...)
或String(format: ...)
溶液不同,该操作的结果仍然是Double
型.
EDIT:
Regarding the comments that it sometimes does not work, please read this: What Every Programmer Should Know About Floating-Point Arithmetic