swift - 在 swift 中将 double 值四舍五入到 x 小数位

标签 swift double nstimeinterval

谁能告诉我如何在 Swift 中将 double 值四舍五入到 x 位小数?

我有:

var totalWorkTimeInHours = (totalWorkTime/60/60)

totalWorkTime 是一个以秒为单位的 NSTimeInterval( double )。

totalWorkTimeInHours 会给我小时数,但它会给我时间量,而且是这么长的精确数字,例如1.543240952039……

当我打印 totalWorkTimeInHours 时,如何将它四舍五入到 1.543?

最佳答案

您可以使用 Swift 的 round 函数来完成此操作。

要以 3 位精度舍入 Double,首先将其乘以 1000,舍入并将舍入结果除以 1000:

let x = 1.23556789
let y = Double(round(1000 * x) / 1000)
print(y) /// 1.236

不同于任何类型的printf(...)String(format: ...) 解决方案,此操作的结果仍然是 类型双

编辑:
关于它有时不起作用的评论,请阅读:What Every Programmer Should Know About Floating-Point Arithmetic

关于swift - 在 swift 中将 double 值四舍五入到 x 小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27338573/

相关文章:

ios - 通知中心未收到帖子

ios - SwiftUI View : two different initializers: cannot convert value of type 'Text' to closure result type 'Content'

java - 从 java BigDecimal 转换为 double 时丢失精度

ios - NSDate 到 TimeStamp 的转换和 NSDate 比较

ios - 需要有关将 UIDatePicker 时间转换为时间戳的帮助

swift - 如何在 Swift 中为符合 NSCoding 协议(protocol)的类实现一个可失败的初始化器?

ios - createCGImage(_ :from:) not using correct rect

比较 2 个具有可接受错误的双数 - 始终显示 "not equal"

c++ - 四舍五入的值(value)

swift - 等待持续时间减少参数