Vedo riferimenti in conflitto in Oracles documentation. C'è qualche differenza tra il modo in cui i decimali sono memorizzati in un FLOAT e in NUMBER tipi nel database?Oracle Floats vs Number
Come ricordo da C, et al, un float ha limitazioni di precisione che un int non ha. R.g. Per 'float', 0.1 (Base 10) è approssimato come 0.110011001100110011001101 (Base 2) che equivale a qualcosa di simile a 0.100000001490116119384765625 (Base 10). Tuttavia, per 'int's, 5 (Base 10) è esattamente 101 (Base 2).
motivo per cui il seguente non terminerà come previsto in C:
float i;
i = 0;
for (i=0; i != 10;)
{
i += 0.1
}
Tuttavia vedo elsewhere in Oracle's documentation che galleggiano è stato definito come un numero. E a quanto ho capito, l'implementazione di Oracle del tipo NUMBER non ha lo stesso problema del float di C.
Quindi, qual è la vera storia qui? Oracle ha deviato dalla norma di ciò che mi aspetto di accadere con float/FLOATs?
(Sono sicuro che è un vortice-in-a-un-uragano di differenza per quello che userò per loro, ma so che avrò domande se 0.1 * 10 uscirà a 1.00000000000000001