我在Oracles documentation看到衝突引用。數據庫中FLOAT和NUMBER類型的小數點之間存在什麼區別?Oracle浮動與數字
正如我從C等人記得的那樣,float具有int不具有的精度限制。例如,對於'float',0.1(基數10)近似爲0.110011001100110011001101(基數2),其基本上等於0.100000001490116119384765625(基數10)。但是,對於'int',5(基數10)恰好是101(基數2)。
這就是爲什麼如預期在C以下不會終止:
float i;
i = 0;
for (i=0; i != 10;)
{
i += 0.1
}
但是我看到漂浮已被定義爲一個NUMBER elsewhere in Oracle's documentation。據我所知,Oracle的NUMBER類型的實現不會遇到與C的float類似的問題。
那麼,這裏真正的故事是什麼?甲骨文是否偏離了我期望與浮動/ FLOAT發生的規範? (我敢肯定,這是一個我將使用它們的蜜蜂放屁的差異,但是我知道如果0.1 * 10出現在1.00000000000000001之後我會有問題)