问题
你需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现。
解决方案
浮点数的一个普遍问题是它们并不能精确的表示十进制数。 并且,即使是最简单的数学运算也会产生小的误差,比如:
>>> a = 4.2
>>> b = 2.1
>>> a + b
6.300000000000001
>>> (a + b) == 6.3
False
>>>
这些错误是由底层CPU和IEEE 754标准通过自己的
在进行浮点数计算时它们无法精确表达出所有的十进制小数位。
a = 4.1
b = 5.329
print(a+b)
9.428999999999998
这些误差实际上是底层CPU的浮点运算单元和IEEE754浮点数算数标准的一种“特性”。python的浮点数类型保存的数据采用的是原始表示形式,因此使用float实例时就不能避免这样的误差。
我们可以使用decimal模块避免这种操作(如果不介意牺牲下性能):
from decimal import Decimal
a = Decimal('4
在python中进行两个整数相除的时候,在默认情况下都是只能够得到整数的值,而在需要进行对除所得的结果进行精确地求值时,想在运算后即得到浮点值,那么如何进行处理呢?
1、修改被除数的值为带小数点的形式即可得到浮点值,这种方法在被除数事先知道的情况下才可以采用有效,而这种情况意味着被除数的值是写死的、固定的,在绝大多数的情况下是不可行的;
2、在进行除法运算前导入一个实除法的模块,即可在两个整数进行相除的时候得到浮点的结果;
复制代码 代码如下:
from __future__ import di