我试图做一个计算器的增长率(双),将结果四舍五入到最近的整数,并从那里重新计算,因此:
let firstUsers = 10.0 let growth = 0.1 var users = firstUsers var week = 0 while users < 14 { println("week \(week) has \(users) users") users += users * growth week += 1 }
但我已经无法到达目前为止。
编辑
我喜欢这样:
var firstUsers = 10.0 let growth = 0.1 var users:Int = Int(firstUsers) var week = 0 while users <= 14 { println("week \(week) has \(users) users") firstUsers += firstUsers * growth users = Int(firstUsers) week += 1 }
虽然我不介意它总是四舍五入,我不喜欢它,因为firstUsers不得不成为一个变量和改变整个程序(为了使下一个计算),我不想它发生。
在基金会图书馆有一个回合(它实际上是在达尔文,但基金会进口达尔文和大多数时间,你想使用基金会,而不是直接使用达尔文)。
import Foundation users = round(users)
print(round(users))
输出:
15.0
round()总是在小数位是> = .5时向上舍入,而当< .5(标准舍入)。你可以使用floor()强制向下舍入,而ceil()强制向上舍入。 如果你需要四舍五入到一个特定的地方,那么你乘以pow(10.0,位数),圆,然后除以pow(10,位数): 舍入为小数点后2位:
let numberOfPlaces = 2.0 let multiplier = pow(10.0,numberOfPlaces) let num = 10.12345 let rounded = round(10.12345 * multiplier) / multiplier print(rounded)
输出:
10.12
注意:由于浮点数学运算的方式,舍入可能不总是完全准确。最好是把它想象成更接近舍入。如果你这样做是为了显示的目的,最好使用字符串格式化来格式化数字,而不是使用数学来舍入它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。