Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Postgres e colonna REAL
mercoledì 27 luglio 2011 - 18.27
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Windows 7
|
Windows XP
|
MySQL 4.1
|
Office 2007
|
Office 2003
|
Chrome
|
Firefox
|
Javascript
|
CSS 2.1
|
HTML 4.01
emaborsa
Profilo
| Newbie
4
messaggi | Data Invio:
mer 27 lug 2011 - 18:27
Ciao a tutti,
ho un problemino con la gestione dei prezzi per il mio programma in Java.
In Java uso double, per inserirli in database ho creato delle colonne REAL. All'inserimento non ho problemi, ma all'estrazione, non sono come dovrebbero. Se per esempio inserisco 6.6, al ritorno ho 6.5999999.
Perchè?
Come faccio a risolvere?
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 27 lug 2011 - 22:27
>In Java uso double, per inserirli in database ho creato delle
>colonne REAL. All'inserimento non ho problemi, ma all'estrazione,
>non sono come dovrebbero. Se per esempio inserisco 6.6, al ritorno
>ho 6.5999999.
>Perchè?
Perché Double e Real sono data type approssimati per definizione e sono utilizzati ad esempio in ambito scientifico, pertanto non ti garantiscono la precisione che cerchi.
>Come faccio a risolvere?
Per la gestione degli importi dovresti utilizzare un data type a precisione fissa come ad esempio Numeric oppure datatype pensati per gestire nativamente questa tipologia di dati come money:
http://www.postgresql.org/docs/9.0/static/datatype.html
Per quanto riguarda Java leggo che la documentazione ufficiale suggerisce di utilizzare java.math.BigDecimal:
http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
http://download.oracle.com/javase/7/docs/api/java/math/BigDecimal.html
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
emaborsa
Profilo
| Newbie
4
messaggi | Data Invio:
mer 27 lug 2011 - 23:31
Ma in Java non ho problemi, usando double fino ad ora è sempre stato preciso, anche se devo ammettere che non ho mai usato più di due posizioni decimali.
Riguardo Postgres, ho appena provato a modificare da REAL a DECIMAL, e sembra essere ok. Essendo abbastanza nuovo riguardo database, non ero a conoscenza di tale tipo. Grazie.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !