Ho creato "oggetto prodotto" per la mia app e ho impostato gli attributi, quando all'improvviso sono arrivato all'attributo price e sono incappato in esso con la domanda su quale tipo è meglio scegliere? Capisco, che per PHP non importa molto, ma diciamo per MySQL lo fa.
Qualche suggerimento?Memorizzazione del prezzo in PHP. Qual è il doppio o la corda migliore?
risposta
I numeri reali sono migliori per i numeri perché è possibile fare confronti corretti con loro (ad es. Prezzo < 10,0). Tuttavia, presentano problemi di precisione (cose come 3.0 = 2.9999999999). È preferibile utilizzare un tipo Decimal nativo in questo caso, ma in mancanza di questo, vorrei memorizzare i prezzi come un numero intero di centesimi (ad es. 6.77 => 677), quindi dividere per 100 prima di presentare il numero all'utente. In questo modo si ottengono le operazioni con il numero nel database e si ottiene la precisione (supponendo che la precisione di 1 cent è sufficiente).
La domanda che mi pongo sempre quando considero i tipi di dati stringa o numerici (int, double, ecc.) È "Sto andando a fare i conti con loro?" Se la risposta è sì, che devo presupporre che è nel tuo caso, vado con il valore numerico. Se la risposta è no, scelgo il valore stringa.
Con le informazioni fornite, sembra preferibile utilizzare solo un numero intero, in modo da poter ordinare e interrogare con valori numerici anziché con valori di stringa. Un int sarebbe migliore di un punto fluttuante in quanto non ha strani problemi di mezzo centesimo.
es., Non si desidera che 6.77 sia maggiore di 12.54, né si desidera qualcosa con il prezzo 6.4312313141.
C'è una spiegazione dettagliata delle soluzioni di "buone pratiche" per questa domanda in this SO question. Usare gli interi è anche un'alternativa accettabile. Indipendentemente da ciò, è meglio usare la stessa soluzione per tutta la tua applicazione per facilitare il confronto e l'aritmetica.
Ricordare che è sempre possibile modificare l'aspetto dei dati prima di presentarli all'utente, utilizzando number_format() o altro.
Né è appropriato.
I prezzi devono essere memorizzati come DECIMALE o INT, perché hanno un numero fisso di punti decimali. Usare i float non è una buona idea in quanto i valori verranno arrotondati. Le stringhe sono problematiche perché non sarete in grado di fare confronti.
Personalmente preferisco i numeri interi per memorizzarlo come valore in centesimi, 650 invece di 6.50. Facile smistamento, nessun problema di arrotondamento e facile visualizzazione in qualsiasi formato per gli utenti.
È possibile controllare il progetto Time and Money su sourceforge. Piena divulgazione: non ho in effetti guardato molto al progetto, ma sembra che ti dia delle buone idee su come gestire tali cose.
- 1. Qual è il rendimento migliore in PHP?
- 2. Qual è il design del pacchetto migliore?
- 3. Qual è il significato del doppio segno percentuale (%%) in R
- 4. Qual è il $$ (doppio simbolo del dollaro) utilizzato in angolare?
- 5. Qual è la migliore sessione save_handler per PHP e perché?
- 6. Qual è la migliore funzione o metodo per il calcolo del modulo (Resto di $ a diviso per $ b) in PHP?
- 7. Qual è il migliore ScheduledExecutorService o AlarmManager in Android?
- 8. Il modo migliore per gestire la memorizzazione/visualizzazione di date in fusi orari diversi in PHP?
- 9. Qual è il risultato del confronto tra doppio e NaN?
- 10. Qual è la migliore API PDF per PHP?
- 11. DTD o schema XML. Qual è il migliore?
- 12. Qual è il modo migliore per legare valori decimali/doppi/float con PDO in PHP?
- 13. Quale è più veloce/migliore per la memorizzazione nella cache, il file system o Memcached?
- 14. Aggiungere il testo prima del prezzo
- 15. doppio segno del dollaro php
- 16. Origine dati oggetto o code-behind: qual è il migliore?
- 17. Qual è la migliore complessità del puzzle N-Queens?
- 18. Qual è il modo migliore per memorizzare le variabili di configurazione in PHP?
- 19. Qual è il metodo migliore per leggere un doppio da un file binario creato in C?
- 20. Meteor: Nascondi o rimuovi elemento? Qual è il modo migliore
- 21. qual è il modo migliore per determinare se un doppio non è zero
- 22. qual è lo scopo del doppio punto interrogativo in rapida
- 23. Qual è il migliore tra TextView o WebView?
- 24. Qual è la migliore soluzione per la creazione di un server SOAP in PHP?
- 25. Qual è la migliore strategia per il caricamento delle proprietà?
- 26. Qual è il significato del nome del token PHP T_PAAMAYIM_NEKUDOTAYIM?
- 27. Qual è il modo migliore per rilevare il completamento del download di un'immagine: onload o addEventListener()?
- 28. PHP: Qual è il più veloce SOAP, file_get_contents o Curl?
- 29. Controllo del nome file valido. Qual è il modo migliore?
- 30. Qual è l'approccio migliore per la registrazione?
Questa è una tecnica abbastanza buona. – Eugene