老师你好,这边做了下测试,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
相似问题