老师你好,这边做了下测试,round方法有些结果很奇怪,请问能否解答下,谢谢。
来源:8-1 认识函数
慕圣1107467
2021-02-01
#【问题】:1.555这个赋值给number_2变量,使用round函数保留2位小数,得出结果为1.55,
# 但值为0.555时,使用round函数保留2位小数,得出结果为0.56
#【补充说明】:Python版本为3.8.7 64-bit
# 系统为Windows 7(64位)
# 电脑只装了1个Python版本
# IDE开发工具是VSCode,按照前几节视频一步步来配置的,中途都没有问题
number_1 = 1.4440
number_2 = 1.5550
number_3 = 1.5560
number_4 = 0.5550
number_5 = 1.5550
number_6 = 2.5550
resule_1 = round(number_1,2)
resule_2 = round(number_2,2)
resule_3 = round(number_3,2)
resule_4 = round(number_4,2)
resule_5 = round(number_5,2)
resule_6 = round(number_6,2)
print("【result_1】="+str(resule_1))
print("【result_2】="+str(resule_2))
print("【result_3】="+str(resule_3))
print("【result_4】="+str(resule_4))
print("【result_5】="+str(resule_5))
print("【result_6】="+str(resule_6))
【运行结果】
【result_1】=1.44
【result_2】=1.55
【result_3】=1.56
【result_4】=0.56
【result_5】=1.55
【result_6】=2.56写回答
2回答
-
7七月
2021-02-01
有很多种不同的省略模式,有向上,向下,也有四舍五入。每种语言都提供了不同的省略模式。这个可以搜索了解下。
012021-02-02 -
慕圣1107467
提问者
2021-02-01
已在百度找到原因:实际1.5550
用二进制转化的是有精度损失,部分小数无法完全用二进制表示。
但基于这种情况,在银行或其他场景下计算可能需要解决办法,所以,请问老师有好的解决方案达到真正的4舍5入么??
网上的搜到的是这样的↓,我觉得不太容易理解
from _pydecimal import Decimal, Context, ROUND_HALF_UP
print(Context(prec=3, rounding=ROUND_HALF_UP).create_decimal('1.5550'))
012021-02-01
相似问题