BINARY_DOUBLE dans Oracle et Double dans Java utilisent la norme IEEE 754.Différence entre la valeur double dans Oracle et Java (IEEE 754)
Mais il y a la différence dans leur précision.
Pour valeur exemple:
456.67d
Oracle:
declare
a BINARY_DOUBLE := 456.67d;
begin
SYS.DBMS_OUTPUT.PUT_Line(TO_CHAR(a,'9.99999999999999999999EEEE'));
end;
Résultat: 4.56670000000000020000E + 02
Java:
Double d = 456.67d;
DecimalFormat formatter = new DecimalFormat("0.000000000000000000000E000");
System.out.println(formatter.format(d));
Résultat: 4.566700000000000000000E002
La valeur en Java est pas aussi précis que dans Oracle.
convertisseurs en ligne a déclaré que la représentation la plus précise pour 456.67d est:
4.56670000000000015916157281026E2
Alors, pourquoi la précision Java est pas la même chose comme dans Oracle? Et comment puis-je obtenir en Java une valeur plus précise?