Devo memorizzare un paio di campi relativi al denaro nel database ma non sono sicuro del tipo di dati da utilizzare tra denaro e decimale.Qual è il modo migliore per memorizzare un valore in denaro nel database?
risposta
Decimale e denaro dovrebbero essere abbastanza affidabili. Quello che posso assicurarti (dalla dolorosa esperienza personale derivante da applicazioni ereditate) è DO usa float!
Immagino che si riduca a precisione e scala. IIRC, money
è 4dp. Se ciò va bene, money
esprime il tuo intento. Se si desidera un maggiore controllo, utilizzare decimal
con una precisione e una scala specifiche.
Uso sempre il decimale; mai usato DENARO prima.
Recentemente, ho trovato un articolo per quanto riguarda decimale rispetto al tipo di dati soldi in SQL Server che si potrebbe trovare interessante:
Sembra anche che il tipo di dati soldi non sempre risultato in risultati accurati quando si eseguire calcoli con esso: click
Ciò che ho fatto in passato, sta utilizzando un campo INT e memorizza l'importo in centesimi (centesimi di dollaro/dollaro).
Potresti per favore approfondire come possiamo rappresentare 100/3, 10/3 e 1/3, ecc.? – NoChance
Dipende dalla vostra applicazione !!! Io lavoro nei servizi finanziari dove normalmente consideriamo il prezzo significativo a 5 decimali dopo il punto, che ovviamente quando acquisti un paio di milioni a 3,12345pence/centesimi è una quantità significativa. Alcune applicazioni forniranno il proprio tipo di SQL per gestirlo.
D'altra parte, questo potrebbe non essere necessario. <Umorismo> Le percentuali dei contraenti sono sempre sembrate arrotondate ai 100 sterline più vicini, ma attualmente sembrano essere di circa £ 25 sterline nell'attuale crisi del credito. </Humor >
Utilizzare i decimali e utilizzare più posizioni decimali di quelle che si ritengono necessarie in modo che le coclulazioni siano corrette. Il denaro non restituisce sempre risultati corretti nei calcoli. In nessun caso utilizzare float o real in quanto si tratta di tipi di dati inesatti e può causare errori di calcolo (soprattutto quando diventano più complessi).
Non allineare i pensieri in base ai tipi di dati disponibili. Piuttosto, analizza i tuoi requisiti e poi vedi quale tipo di dati si adatta meglio. Float è in qualsiasi momento la scelta peggiore considerando la limitazione dell'architettura nella memorizzazione della versione binaria dei numeri in virgola mobile. Il denaro è un'unità standard e avrà sicuramente più supporto nella gestione delle operazioni legate al denaro. In caso di decimale, dovrai gestire ciascuno e tutto ma sai che sono solo tu a gestire un tipo decimale, quindi nessuna sorpresa che potresti ottenere con altri due tipi di dati.
Per alcuni dati (come il denaro) in cui non si desidera l'approssimazione o le modifiche a causa del valore float, è necessario assicurarsi che i dati non siano mai "mobili", che debbano essere rigidi su entrambi i lati del separatore decimale.
Un modo semplice per essere sicuri è valutare il valore convertendolo in tipo di dati INTEGER e accertarsi che mentre si riattiva il valore, il punto decimale viene posizionato nella posizione corretta.
ad es.
1. Per salvare $ 240,10 nel database.
2. Convertirlo in una forma integrale pura: 24010 (si conosce solo lo spostamento dei decimali).
3. Ripristinare lo stato decimale corretto. Posizionare i decimali in 2 posizioni da destra. $ 240,10
Quindi, mentre è in database, sarà in una forma intera rigida.
- 1. Il modo migliore per memorizzare un array nel database MySQL?
- 2. Qual è il modo migliore per memorizzare un database MySQL nel controllo del codice sorgente?
- 3. Qual è il modo migliore per memorizzare un array in un database relazionale?
- 4. Qual è il modo migliore per memorizzare un valore URL usando MySQL?
- 5. Qual è il modo migliore per memorizzare singoli dati non ripetibili in un database?
- 6. Qual è il modo più efficiente per memorizzare coppie nome/valore in un database Marklogic
- 7. Qual è il metodo migliore per memorizzare valori predefiniti nel database?
- 8. Qual è il modo migliore per memorizzare e visualizzare il testo inserito nel markdown?
- 9. Django: Come dovrei memorizzare un valore in denaro?
- 10. Qual è il modo migliore per memorizzare le informazioni sul fuso orario nel mio DB?
- 11. Qual è il modo migliore per memorizzare un gruppo di costanti che utilizza il mio programma?
- 12. Qual è il database "migliore" per l'embedded?
- 13. Il modo migliore per memorizzare i valori enum nel database - String o Int
- 14. Il modo migliore per memorizzare un valore codificato Base64 nel DB MySQL?
- 15. il modo migliore per memorizzare relazioni utente 1: 1 nel database relazionale
- 16. qual è il modo migliore per memorizzare parametri di query filtrati dall'utente in una tabella di database?
- 17. Come memorizzare un albero nel database SQL
- 18. Qual è il modo migliore per memorizzare le impostazioni globali dell'applicazione in un'applicazione Rails?
- 19. qual è il modo migliore per conservare intervallo di tempo in un database del server SQL
- 20. Il modo migliore per evitare la duplicazione nel database mysql
- 21. Il modo migliore per memorizzare i dati gerarchici in hbase
- 22. Il modo migliore per memorizzare gli elenchi ordinati in un database?
- 23. Il modo migliore per memorizzare i criteri Badge?
- 24. Qual è il modo migliore per memorizzare/calcolare i punteggi degli utenti?
- 25. Qual è il modo migliore per chiudere un ramo Mercurial?
- 26. Durante la progettazione di database, qual è il modo preferito per memorizzare più valori vero/falso?
- 27. Qual è il modo migliore per memorizzare l'array di stringhe come proprietà del nodo in Neo4j
- 28. Qual è il modo migliore per memorizzare le variabili di classe in PHP?
- 29. Il modo migliore per memorizzare la password in sql
- 30. Qual è il modo migliore per seminare un database in Rails?
Perché no? Che problemi hai usato float? –
Errori di arrotondamento molto probabilmente – nalply
La sua applicazione probabilmente ha totalizzato circa 200.000 importi e ha esaurito le cifre –