python浮点数精度问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python浮点数精度问题相关的知识,希望对你有一定的参考价值。
参考技术A 原因如下:出现上面的情况,主要还是因浮点数在计算机中实际是以二进制保存的,有些数不精确。
比如说: 0.1是十进制,转化为二进制后它是个无限循环的数:
0.00011001100110011001100110011001100110011001100110011001100
而python是以双精度(64)位来保存浮点数,多余的位会被截掉,所以看到的是0.1,但在电脑上实际保存的已不是精确的0.1,参与运算后,也就有可能点误差。
------------------------------------------------------------------------------------------------------------------------------------
[Python3]计算高精确度的浮点数方法
decimal 模块的"getcontext"和"Decimal"方法
getcontext().prec = 2 #设置精度
------------------------------------------------------------------------------------------------------------------------------------
decimal模块中,可以通过整数,字符串或原则构建decimal.Decimal对象。如果是浮点数,特别注意因为浮点数本身存在误差,需要先将浮点数转化为字符串。
当然精度提升的同时,肯定带来的是性能的损失。在对数据要求特别精确的场合(例如财务结算),这些性能的损失是值得的。但是如果是大规模的科学计算,就需要考虑运行效率了。毕竟原生的float比Decimal对象肯定是要快很多的。
-------------------------------------------------------------------------------------------------------------------------------
浮点数和整数的比较
值相等,地址不同
以上是关于python浮点数精度问题的主要内容,如果未能解决你的问题,请参考以下文章