我正在尝试制作一个增长率(Double
)计算器,将结果四舍五入到最接近的整数并从那里重新计算,如下所示:
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
必须成为变量并在整个程序中进行更改(以便进行下一次计算),我不希望这种情况发生。
库中有一个round
可用项 (实际上在中 ,但是 在 大多数情况下您需要使用 导入 而不是 直接 使用 )
。Foundation
Darwin``Foundation``Darwin``Foundation``Darwin
import Foundation
users = round(users)
在操场上运行代码,然后调用:
print(round(users))
输出:
15.0
round()
始终向上舍当小数位>= .5
和向下时,它的< .5
(标准取整)。您可以使用floor()
强制舍入和ceil()
强制舍入。
如果您需要一轮一个特定的地方,那么你乘pow(10.0, number of places)
,round
,然后除以pow(10, number of places)
:
四舍五入到小数点后两位:
let numberOfPlaces = 2.0
let multiplier = pow(10.0, numberOfPlaces)
let num = 10.12345
let rounded = round(num * multiplier) / multiplier
print(rounded)
输出:
10.12
注意:
由于浮点数学运算的方式,rounded
可能并不总是完全准确的。最好将其视为四舍五入的近似值。如果出于显示目的而执行此操作,则最好使用字符串格式设置数字格式,而不要使用数学取整。
问题内容: 我想将a舍入到最接近的10的倍数。 例如,如果数字为8.0,则四舍五入为10。如果数字为2.0,则将其四舍五入为0。 我怎样才能做到这一点? 问题答案: 您可以使用函数(将浮点数四舍五入到最接近的整数值)并应用“比例因子” 10: 用法示例: 在第二个示例中,除以十(),四舍五入(),转换为整数(),然后再乘以10()。 斯威夫特3: 或者:
问题内容: 我正在尝试在python中舍入整数。我看了内置的round()函数,但似乎舍入浮动了。 我的目标是将整数四舍五入到最接近的10的倍数。即:5-> 10、4-> 0、95-> 100,等等。 5和更高的值应四舍五入,4和更低的值应四舍五入。 这是我这样做的代码: 这是实现我想要实现的最好方法吗?有内置的功能吗?另外,如果这是最好的方法,那么我在测试中遗漏的代码是否有问题? 问题答案: 实
问题内容: 我可以在python中进行以下舍入: 四舍五入到最接近的05小数 7,97-> 7,95 6,72-> 6,70 31,06-> 31,05 36,04-> 36,05 5,25-> 5,25 希望有道理。 问题答案:
问题内容: 我们如何在php中将数字四舍五入到最接近的10? 说我有,我将使用什么代码将其四舍五入? 问题答案: 会下降。 会上升。 默认情况下会最接近。 除以10,得到ceil,然后乘以10以减少有效数字。 编辑:我已经这样做了很长时间..但是TallGreenTree的答案是更干净。
问题内容: 我试图弄清楚如何将货币金额向上舍入至最接近的5美分。以下显示了我的预期结果 我需要结果的精度为2(如上所示)。 更新资料 按照下面的建议,我能做的就是 我不认为这是100%的原始数据-我担心在转换为双精度和从双精度转换时精度可能会丢失。但是,这是到目前为止我能想到的最好的方法,并且 似乎 可以解决。 问题答案: 您可以使用普通双精度来做到这一点。 编辑:对于负数,您需要减去0.5
问题内容: 我一直试图舍入长浮点数,例如: 到目前为止没有成功。我想,(尽管这或圆形上下,这是不是我要找的)和它没有任何工作(还是浮点数)。 我能做什么? 编辑:代码: 问题答案: int(round(x)) 将其舍入并将其更改为整数 编辑: 您没有将int(round(h))分配给任何变量。当您调用int(round(h))时,它返回整数,但不执行其他任何操作。您必须将该行更改为: 将新值分配给