建立个人网站主题新中式装修风格效果图
web/
2025/9/30 5:42:58/
文章来源:
建立个人网站主题,新中式装修风格效果图,网站的栏目关键词,农产品推广方案最近遇到一个python的小数的问题#xff0c;本来应该很简单的小于判断#xff0c;无论如何都不正确#xff0c;而且浮点小数都没问题#xff0c;但decimal小数有问题#xff0c;给我整蒙了#xff0c;后来才发现是对decimal不了解所致#xff0c;如果你还用float转decim… 最近遇到一个python的小数的问题本来应该很简单的小于判断无论如何都不正确而且浮点小数都没问题但decimal小数有问题给我整蒙了后来才发现是对decimal不了解所致如果你还用float转decimal求解精确结果那你一定要看看本文以下是jupyter的python代码和运行结果 # 首先导入decimal模块
from decimal import DecimalDecimal(0.000000001)Decimal(1E-9)# 可以看到decimal可以将 string类型转为精确小数而且可以反向转换
Decimal(0.000000001).to_eng_string() 1E-9format(Decimal(0.00000001), 0.8f)0.00000001# 但是有如下问题float的如下判断是false0.11 (0.1 0.01)False# decimal的如下判断却是True
Decimal(0.11) (0.1 0.01)TrueDecimal(0.11) Decimal(0.1 0.01)TrueDecimal(0.11) Decimal(0.1) Decimal(0.01)True# 更为严重的是从小数转换为decimal的结果可能与常识不符
Decimal(0.11) Decimal(0.1) Decimal(0.01)False# 注意下面的结果
Decimal(0.1 0.01)Decimal(0.11000000000000000055511151231257827021181583404541015625)0.1 0.010.11Decimal(0.1) Decimal(0.01)Decimal(0.1100000000000000057592819402)Decimal(0.1) Decimal(0.01)Decimal(0.11)# 所以Decimal最好从字符串转而不是通过float转这样会有精度问题Decimal(0.1) Decimal(0.01) Decimal(0.1) Decimal(0.01)FalseDecimal(0.1) Decimal(0.01) 0.1 0.01False# 最后看一个实际应用对比Decimal(0.0101) 1*Decimal(0.0001) Decimal(0.01)FalseDecimal(0.0101) 1*Decimal(0.0001) Decimal(0.01)True# 不过0的转换没有问题
Decimal(0) Decimal(0)TrueDecimal()Decimal(0)# 和java中的BigDecimal很像使用时都需要注意java的bigdecimal用法可以参考 https://juejin.cn/post/7374683456729104438
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84283.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!