4 回答
TA贡献3条经验 获得超0个赞
round是四舍六入五平分...不是严格的四舍五入
例如:
round(2.135, 2)=2.13
round(2.145, 2)=2.15
如果要考虑四舍五入的话,可以用quantize
如:
Decimal('2.135').quantize(Decimal('0.00'))=2.14
Decimal('2.145').quantize(Decimal('0.00'))=2.15
同时可以传递额外参数决定进位方式:
Decimal('2.135').quantize(Decimal('0.00'),ROUND_HALF_EVENT)=2.14 //四舍五入进位
Decimal('2.135').quantize(Decimal('0.00'),ROUND_UP)=2.14 //进位
Decimal('2.135').quantize(Decimal('0.00'),ROUND_DOWN)=2.13 //不进位
更多参数可以网上自行查阅一下
TA贡献1719条经验 获得超6个赞
您可以使用round函数,该函数将数字作为第一个参数,第二个参数作为精度。
在您的情况下,它将是:
answer = str(round(answer, 2))
TA贡献1796条经验 获得超10个赞
使用str.format()的语法,以显示 answer具有两个小数位(不改变的基础值answer):
def printC(answer):
print "\nYour Celsius value is {:0.2f}ºC.\n".format(answer)
哪里:
:介绍格式规范
0 为数字类型启用符号感知零填充
.2将精度设置为2
f 将数字显示为定点数字
TA贡献1804条经验 获得超8个赞
大多数答案建议round或format。round有时会四舍五入,在我的情况下,我需要将变量的值四舍五入,而不仅仅是这样显示。
round(2.357, 2) # -> 2.36
import math
v = 2.357
print(math.ceil(v*100)/100) # -> 2.36
print(math.floor(v*100)/100) # -> 2.35
要么:
from math import floor, ceil
def roundDown(n, d=8):
d = int('1' + ('0' * d))
return floor(n * d) / d
def roundUp(n, d=8):
d = int('1' + ('0' * d))
return ceil(n * d) / d
添加回答
举报