Python运算显示结果问题

本人刚开始学Python,今天在练习时遇到个奇怪的问题,请大家帮忙看看是什么原因明明都加的是3.69,为什么一个结果正确,另一个却显示了那么长的小数位?

我的也一样,不纠结这个。反正使用时指定精度就行了。

帮你试了,必须写成这样才行。二进制表示10进制的小数,10进制里很正常的

谈谈关于Python里面小数点精度控制的问题

十进制整数不会变成二进制小数,但十进制很短的小数的是可能变成二进制很长小数的。
例如0.54转变成二进制是:
0.54=0.10001010001111010111000010100011110101110000101001B

还有一些十进制下一两位小数,在二进制下无限循环小数的,只能取近似值。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-02-07
浮点数一个普遍的问题就是在计算机的世界中,浮点数并不能准确地表示十进制。并且,即便是最简单的数学运算,也会带来不可控制的后果。
因为,在计算机的世界中只认识0与1。而0.1 的二进制表示为 0.000110011[0011]...,因为是无限循环的,无法用有限的位表示,所以计算机系统会进行舍入,以求用最接近的值来表示,这里涉及到不同的舍入方式。
再比如,double类型是 64bit 的,最多能表达 2^64 个数,实数有多少呢?无数个,所以 double 类型是装不下所有实数的,只能表达一个近似值。
第2个回答  2019-01-11
这个是由于Python里面浮点运算的不确定性造成,楼上也有解释到,把十进制浮点数转换为二进制在运算,有个尾巴,在0.1+0.3等计算都有这样的问题,用round函数取精度就好,一般不会有大影响。
第3个回答  2018-02-07
python计算要把数字先转为二进制,然后因为小数以二进制形式表示时的有穷性,导致计算误差。就像1/3 = 0.333333333... ; 1/3 + 1/3 + 1/3 =0.33333... + 0.33333.... +0.33333... = 0.9999999.... 。大概这个意思,你自己理解下吧
第4个回答  2018-02-07
浮点数 在计算机内部的表示有误差
相似回答