我們知道在C中,單精度浮點範圍是從1.xxxx * 10^-38到3.xxxx * 10^38。c中的浮點運算
在我的演講稿有這樣的操作:
(10^10 + 10^30) + (-10^30) ?= 10^10 + (10^30 + -10^30)
10^30 - 10^30 ?= 10^10 + 0
我不知道爲什麼10^10 + 10^30 = 10^30在這種情況下?
我的想法是,由於FP的範圍可以降到10^-38和10^38,所以不應該有溢出,所以`10^10 + 10^30不應該最終成爲10^30。
您應該檢查幻燈片的其餘部分,浮動點也僅限於顯著位數。所以結果是四捨五入的,而不是確切的。 – Nabla
@ yklee1013「我們知道在C中,浮點範圍是...」在C中沒有指定。在C中,_minimum_「float」範圍從1E-37到1E + 37。有關精度的想法:FLT_DIG的最小值是6,FLT_EPSILON的最大值是1E-5。 C11§5.2.4.2.2。在選擇平臺(10^10 + 10^30)=(-10^30)上浮動不足爲奇,精度不夠。 – chux