美文网首页
关于Python的数值精度问题

关于Python的数值精度问题

作者: NoneLand | 来源:发表于2016-12-06 16:36 被阅读454次

在Python中(其他语言中也存在这个问题,这是计算机采用二进制导致的),有时候由于二进制和十进制之间对应问题会导致数值的精度问题,比如无法用有限个二进制位完整地表示0.1,因为0.1转化为二进制之后位一个无限循环小数。如下图所示:

>>>1.1*2.2
2.4200000000000004

>>>print 1.1*2.2
2.42

这说明Python内部在将float类型转换为字符串时做了一些检测,从而忽略了后边的零。具体的实现原理还有待继续探究。在CodeWar的Caculator题目中,本来使用eval()函数就能极好地解决这道题,然而由于精度问题导致无法通过Test,如下所示:

>>>eval('1.1*2.2*3.3')
7.986000000000001

经过上面的提醒,改为

>>>float(str(eval('1.1*2.2*3.3')))
7.986

后成功解决问题。
当然具体的Python原理还需要具体探究。

相关文章

  • 关于Python的数值精度问题

    在Python中(其他语言中也存在这个问题,这是计算机采用二进制导致的),有时候由于二进制和十进制之间对应问题会导...

  • 1.2数字

    一、python数值类型基本知识 完整的python数值类型工具包括: 整数和浮点对象 复数对象 小数:固定精度对...

  • 关于JavaScrit的数值精度问题解决

    本文中采用的代码示例都为javaScript代码 最近在刷一些javaScript的相关题目,过程中一个坑爹的细节...

  • mysql8 数据类型 float double decimal

    float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都...

  • Python黑帽编程之 数值类型

    数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型、长整型、布尔、双精度浮点、十进制浮点和复...

  • 利用scipy数值微分与数值积分

    SciPy是Python的一个强大的科学计算工具库,而高精度的数值微分与数值积分又是科学计算中重要的成分。尽管我们...

  • 雷潮教育第一期班C#课程阶段总结(1)

    1.基本数据类型 数值类型整型 int单精度浮点型 float双精度浮点型 double更高精度数值(财务) de...

  • 《Java编程思想》笔记——基础知识

    1.基本类型 高精度数值类型: BigInteger和BigDecimal是java中的高精度数值类型,由于它们是...

  • JS数值精度

    整数和浮点数 JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是...

  • [js]数值的精度

    基础知识 js内部所有数字在计算机内存中的表示都是64位双精度浮点数 双精度浮点数表示法的副作用 使用二进制浮点数...

网友评论

      本文标题:关于Python的数值精度问题

      本文链接:https://www.haomeiwen.com/subject/jbermttx.html