将双值舍入为x小数位数

将双值舍入为x小数位数

有人能告诉我如何在SWIFT中把一个双值乘以x小数位数吗?

我有:

var totalWorkTimeInHours = (totalWorkTime/60/60)

带着totalWorkTime在第二位成为NSTimeInterval(双)。

totalWorkTimeInHours会给我时间,但它给了我这么长的精确数字,比如1.543240952039.

当我打印的时候,我该怎么把这个算到1.543呢?totalWorkTimeInHours?


慕码人8056858
浏览 577回答 3
3回答

米脂

你可以用斯威夫特的round功能来完成这一任务。围成一圈Double使用3位精度,首先将其乘以1000,再将舍入的结果除以1000:let x = 1.23556789let y = Double(round(1000*x)/1000)print(y)  // 1.236除了任何一种printf(...)或String(format: ...)解决方案,此操作的结果仍然是类型的。Double.编辑:关于有时不起作用的评论,请阅读以下内容:关于浮点算法,每个计算机科学家都应该知道些什么?

撒科打诨

SWIFT 2分机更通用的解决方案是以下扩展,它适用于SWIFT 2&iOS 9:extension Double {     /// Rounds the double to decimal places value    func roundToPlaces(places:Int) -> Double {         let divisor = pow(10.0, Double(places))         return round(self * divisor) / divisor    }}SWIFT 3分机在SWIFT 3round被替换为rounded:extension Double {     /// Rounds the double to decimal places value    func rounded(toPlaces places:Int) -> Double {         let divisor = pow(10.0, Double(places))         return (self * divisor).rounded() / divisor    }}示例,返回双四舍五入至小数点4位的示例:let x = Double(0.123456789).roundToPlaces(4)  // x becomes 0.1235 under Swift 2 let x = Double(0.123456789).rounded(toPlaces: 4)  // Swift 3 version

鸿蒙传说

我怎样才能把这个算到,比方说,1.543呢?当我打印 totalWorkTimeInHours?转圆totalWorkTimeInHours若要打印到3位数字,请使用String构造函数,该构造函数采用format字符串:print(String(format: "%.3f", totalWorkTimeInHours))
打开App,查看更多内容
随时随地看视频慕课网APP