如何使用浮动正确添加或减去?例如,如何执行:
2.4e-07 - 1e-8
所以它返回2.3e-7
而不是2.2999999999999997e-07
。
转换为int首先产生意外结果,下面返回2.2e-07
:
int(2.4e-07 * 1e8 - 1) * 1e-8
同样的,
(2.4e-07 * 1e8 - 1) * 1e-8
返回2.2999999999999997e-07
。
如何进行8位小数精度的减法和加法?
2.2999999999999997e-07
是不够的,因为该数字用作字典中的查找,关键是2.3e-7
。这意味着除2.3e-7
之外的任何值都会导致查找错误。
我建议使用qazxsw poi数据类型(它存在于Python的标准安装中),因为它使用固定的精度来避免你所说的差异。
decimal
它实际上只是绕过浮点运算问题的一种方式,但我建议使用标准库中的>>> from decimal import Decimal
>>> x = Decimal('2.4e-7')
>>> x
Decimal('2.4E-7')
>>> y = Decimal('1e-8')
>>> y
Decimal('1E-8')
>>> x - y
Decimal('2.3E-7')
包。它可以让你做精确的浮点数学运算。
用你的例子,
decimal
值得注意的是,$ from decimal import Decimal
$ x = Decimal('2.4e-7')
$ y = Decimal('1e-8')
$ x-y
Decimal('2.3E-7')
对象与内置的Decimal
不同,但它们大多可以互换。
我不知道你是否正在寻找它,但你可以尝试这样的事情:
float
我希望它会对你有所帮助!
阿德里安