Python运算显示结果问题

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




偶然的你
浏览 611回答 4
4回答

守着一只汪

浮点数一个普遍的问题就是在计算机的世界中,浮点数并不能准确地表示十进制。并且,即便是最简单的数学运算,也会带来不可控制的后果。因为,在计算机的世界中只认识0与1。而0.1 的二进制表示为 0.000110011[0011]...,因为是无限循环的,无法用有限的位表示,所以计算机系统会进行舍入,以求用最接近的值来表示,这里涉及到不同的舍入方式。再比如,double类型是 64bit 的,最多能表达 2^64 个数,实数有多少呢?无数个,所以 double 类型是装不下所有实数的,只能表达一个近似值。

慕田峪7331174

python计算要把数字先转为二进制,然后因为小数以二进制形式表示时的有穷性,导致计算误差。就像1/3 = 0.333333333... ; 1/3 + 1/3 + 1/3 =0.33333... + 0.33333.... +0.33333... = 0.9999999.... 。大概这个意思,你自己理解下吧

子衿沉夜

我的也一样,不纠结这个。反正使用时指定精度就行了。帮你试了,必须写成这样才行。二进制表示10进制的小数,10进制里很正常的谈谈关于Python里面小数点精度控制的问题十进制整数不会变成二进制小数,但十进制很短的小数的是可能变成二进制很长小数的。例如0.54转变成二进制是:0.54=0.10001010001111010111000010100011110101110000101001B还有一些十进制下一两位小数,在二进制下无限循环小数的,只能取近似值。 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python