sql >> Database teknologi >  >> RDS >> Oracle

Dvale tab af præcision i resultater, når du kortlægger et tal (22,21) til BigDecimal

Det er et resultat af initialisering af BigDecimal fra double :

System.out.println(String.format("%21.20f", new BigDecimal(0.493)); 
// Prints 0,49299999999999999378  

Så når BigDecimal initialiseret på denne måde gemmes i databasen, producerer den en unøjagtig værdi, som indlæses korrekt senere.

Hvis BigDecimal initialiseres af streng, eller hvis værdien er sat direkte i Java, fungerer alt fint.



  1. Få data fra en bestemt bruger i PHP

  2. Konverter TIMESTAMP difference kolonnedata til strengformat

  3. Vil du reservere mySQL auto-incremented ID'er?

  4. Opret en sekvens med START MED fra forespørgsel