python小数点后两位数的减法为什么会出现循环小数
导读:python小数点后两位数的减法为什么会出现循环小数?首先要说明的是这个现象不仅仅发生在减法, 凡是涉及到浮点型(float 的基本数学计算都有可能出现你认为是错误的行为。比如下面这个加法;再说原因, 这个主要是由于浮点型数据在计算机内部是...
python小数点后两位数的减法为什么会出现循环小数?
首先要说明的是这个现象不仅仅发生在减法, 凡是涉及到浮点型(float)的基本数学计算都有可能出现你认为是错误的行为。比如下面这个加法;
再说原因, 这个主要是由于浮点型数据在计算机内部是以二进制形式表示的。而小数由二进制表示往往由于精度的原因导致和实际表示的值不一致;比如上面的"2.1"在python解释执行时已经被表示成内部的二进制形式,有可能发生精度的偏移。这样计算之后的结果自然与期望的不一致了。
那么如何要避免这个问题呢?特别是与MONEY/$$$$$$$相关的计算的时候:
a. 用decimal 这个数据类型进行计算:
b.如果只是想显示出期望的值,可以用rounding:
> > t = 0.2+0.1
> > print("%0.1f" % t)
===> 0.3
c.可以利用Int类型计算:
> > (0.2 * 10 + 2.1 * 10)/10
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: python小数点后两位数的减法为什么会出现循环小数
本文地址: https://pptw.com/jishu/62865.html
