sql >> Databasteknik >  >> RDS >> Oracle

Vilolägesförlust av precision i resultat när du mappar ett tal (22,21) till BigDecimal

Det är ett resultat av initialisering av BigDecimal från double :

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

Så när BigDecimal initierat på detta sätt sparas i databasen, producerar det ett felaktigt värde, som läses in korrekt senare.

Om BigDecimal initieras av sträng eller om värdet är satt direkt i Java fungerar allt bra.



  1. SQL:Hur kan vi göra en tabell1 JOIN tabell2 PÅ en tabell som ges i ett fält i tabell1?

  2. Testa för säkerhetssårbarheter i webbapplikationer:Bästa metoder?

  3. Så här löser du ORA-29280:ogiltig katalogsökväg

  4. Fråga efter data genom att sammanfoga två tabeller i två databaser på olika servrar