我试图使一个计算器的增长率(双),将结果四舍五入到最近的整数,并从那里重新计算,如:
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必须成为一个变量,并在整个程序中改变(为了进行下一次计算),这是我不希望发生的。
在Foundation库中有一个可用的轮(它实际上在Darwin中,但Foundation导入了Darwin,大多数时候你会想使用Foundation而不是直接使用Darwin)。
import Foundation
users = round(users)
在操场上运行代码,然后调用:
print(round(users))
输出:
15.0
Round()总是在小数点后>= .5时向上舍入,在< .5时向下舍入(标准舍入)。可以使用floor()强制向下舍入,使用ceil()强制向上舍入。
如果你需要四舍五入到一个特定的位置,那么你乘以pow(10.0,位数),四舍五入,然后除以pow(10,位数):
四舍五入到小数点后两位:
let numberOfPlaces = 2.0
let multiplier = pow(10.0, numberOfPlaces)
let num = 10.12345
let rounded = round(num * multiplier) / multiplier
print(rounded)
输出:
10.12
注意:由于浮点数学的工作方式,四舍五入可能并不总是完全准确。最好把它看作是四舍五入的近似。如果这样做是为了显示,最好使用字符串格式来格式化数字,而不是使用数学来四舍五入。
在Foundation库中有一个可用的轮(它实际上在Darwin中,但Foundation导入了Darwin,大多数时候你会想使用Foundation而不是直接使用Darwin)。
import Foundation
users = round(users)
在操场上运行代码,然后调用:
print(round(users))
输出:
15.0
Round()总是在小数点后>= .5时向上舍入,在< .5时向下舍入(标准舍入)。可以使用floor()强制向下舍入,使用ceil()强制向上舍入。
如果你需要四舍五入到一个特定的位置,那么你乘以pow(10.0,位数),四舍五入,然后除以pow(10,位数):
四舍五入到小数点后两位:
let numberOfPlaces = 2.0
let multiplier = pow(10.0, numberOfPlaces)
let num = 10.12345
let rounded = round(num * multiplier) / multiplier
print(rounded)
输出:
10.12
注意:由于浮点数学的工作方式,四舍五入可能并不总是完全准确。最好把它看作是四舍五入的近似。如果这样做是为了显示,最好使用字符串格式来格式化数字,而不是使用数学来四舍五入。