水木社区手机版
首页
|版面-Python的自由天空(Python)|
新版wap站已上线
返回
首页
|
上页
|
2/2
|
转到
主题:大佬解释一下,为何0.1+0.2的结果比0.3大?
50楼
|
seablue
|
2023-11-13 11:43:01
|
展开
我概念说错了。就是数学上的小数、实数。
https://baike.baidu.com/item/%E6%B5%AE%E7%82%B9%E6%95%B0%E6%A0%87%E5%87%86/22719915
浮点数的舍入
任何有效数上的运算结果,通常都存放在较长的寄存器中,当结果被放回浮点格式时,必须将多出来的比特丢弃。 有多种方法可以用来运行舍入作业,实际上IEEE标准列出4种不同的方法:
舍入到最接近:舍入到最接近,在一样接近的情况下偶数优先(Ties To Even,这是默认的舍入方式):会将结果舍入为最接近且可以表示的值,但是当存在两个数一样接近的时候,则取其中的偶数(在二进制中式以0结尾的)。
朝+∞方向舍入:会将结果朝正无限大的方向舍入。
朝-∞方向舍入:会将结果朝负无限大的方向舍入。
朝0方向舍入:会将结果朝0的方向舍入。
【 在 flw 的大作中提到: 】
: 浮点数为什么是无限的?
: 浮点数当然是有限的呀。
: 无限的是有理数。
: ...................
--
FROM 221.216.197.*
51楼
|
seablue
|
2023-11-13 11:49:51
|
展开
https://docs.python.org/3/library/decimal.html
https://docs.python.org/3/tutorial/floatingpoint.html
【 在 feng321 的大作中提到: 】
: 看了,也没用。我现在就想搞清楚,0.1+0.2是如何等于0.3000000...0004的。具体的计算过程是怎么样的?你说了 吗?
--
FROM 221.216.197.*
53楼
|
seablue
|
2023-11-13 11:52:32
|
展开
【 在 flw 的大作中提到: 】
: 数学上的小数是个不严谨的概念,
: 除了小学用,到了中学就不用了。
: 一般是说,有理数,无理数,然后实数,这是常见数集。
是的。
: 浮点数的运算确实会有个精度问题,
: 但浮点数本身是精确的。
: 但是楼主的问题在这里暂时还不涉及浮点数运算的问题,
: 因为 0.1 + 0.2 既不会增加有效数字位数,也不会导致严重的进位。
: 他的问题,本质上是 0.1 这样的十进制字面量在计算机里面本来就无法精确表达,
我的理解,这是因为十进制的实数转换成二进制的浮点数导致了精度的丢失。
: 他写出来的算式表达的只是人类的意志,计算机无法精确复原其含义,
: 只能取近似值,那么得出的结果也自然就不符合人类预期了。
--
FROM 221.216.197.*
55楼
|
seablue
|
2023-11-13 12:00:40
|
展开
十进制表示的实数
【 在 flw 的大作中提到: 】
: 实数是个数集,数是不分进制的。
: 小数是个数字,数字是分进制的。
: 所以应该叫十进制小数。
: ...................
--
FROM 221.216.197.*
首页
|
上页
|
2/2
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版