2011-06-17 87 views

回答

2

這只是一個猜測,但許多系統在格式化輸出的浮點值時,會打印出比其他任何浮點數更接近結果的最短數字。由於FLOAT是雙精度的,REAL是單精度的,它們會將「0.1」舍入到不同的二進制近似值,很可能對於其中的一個,0.1更接近四捨五入的值,而不是格式的任何其他值,而另一方面則不是。

1

有32位(單精度)和64位的0.1十進制值的(雙精度)表示之間的差異。您可以使用在線IEEE 754 calculator來查看。

32 bit: 0.09999999403953552 (3DCCCCCC) 
64 bit: 0.1 (3FB999999999999A) 

我檢查IBM DB2 documentation,實際上浮動功能是DOUBLE的同義詞,所以它返回64位表示,這是 確切 顯示有作爲近似值0.1。

REAL函數返回一個 單精度浮點數 的表示形式。

FLOAT函數返回一個 數字的浮點表示形式的 數字。 FLOAT是DOUBLE的同義詞。

+2

64位浮點值不能準確地表示0.1 eiter – 2011-06-17 15:49:28