2011-06-17 52 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