我需要四舍五入一个浮点数。例如4.00011。
内置函数round()
总是在数字> .5时四舍五入,在<= 5时四舍五入。这非常好。
当我想向上(向下)取整时,我import math
并使用函数math.ceil()
(math.floor()
)。
缺点是ceil()
和floor()
没有精确的“设置”。
因此,作为R程序员,我基本上只会编写自己的函数:
def my_round(x, precision = 0, which = "up"):
import math
x = x * 10 ** precision
if which == "up":
x = math.ceil(x)
elif which == "down":
x = math.floor(x)
x = x / (10 ** precision)
return(x)
my_round(4.00018, 4, "up")
my_round(4.00018, 4, "down")
我找不到对此的疑问(为什么?)。还有其他我想念的模块或功能吗?拥有一个具有基本(更改)功能的大型图书馆会很棒。
编辑:我不谈论整数。
答案 0 :(得分:3)
从this SO post中查看我的答案。通过将floor
换成round
,您应该能够轻松地对其进行修改。
请告诉我是否有帮助!
编辑 我只是感觉到了,所以我想提出一个基于代码的解决方案
import math
def round2precision(val, precision: int = 0, which: str = ''):
assert precision >= 0
val *= 10 ** precision
round_callback = round
if which.lower() == 'up':
round_callback = math.ceil
if which.lower() == 'down':
round_callback = math.floor
return '{1:.{0}f}'.format(precision, round_callback(val) / 10 ** precision)
quantity = 0.00725562
print(quantity)
print(round2precision(quantity, 6, 'up'))
print(round2precision(quantity, 6, 'down'))
产生
0.00725562
0.007256
0.007255