Newsgroup: it.comp.www.php
Titolo: Campo numerico su mysql

Scusate se ripropongo una domanda già fatta ma, anche dopo alcune
prove, non ho le idee chiare.
Provo a spiegare la situazione: da un servizio di un sito mi arrivano
dei valori (sono delle quotazioni in euro e gbp e usd). Io dovrei
registrarli su mysql per tenerne uno storico, fare dei conti,
calcolare il max, il min, ed altre operazioni.
Mi arrivano in formati come questi esempi sotto (con il Punto come
separatore) di cui io non conosco con precisione la lunghezza.
1067.85200905
917.48538351
30.9435997
23.29022669
20.01067787
794
597.6755566
1774
1335.3607524
Alcuni consigli mi mandano sul formato Decimal (ma mi mette un sacco
di Zeri in giro). Altri mi dicono di usare il Varchar e poi fare i
conti da php... ma non posso perchè alcuni calcoli li faccio
direttamente dalla query.
Mi date una mano a scegliere il formato più indicato alla situazione?

 Zeri in giro)
Avere un sacco di zeri in giro non è un errore.
ti tieni il sacco di zeri e al momento di far vedere il numero usi 
number_format

 Avere un sacco di zeri in giro non è un errore.
Ok, quindi come imposteresti il decimal(M,D)? Quanto per M e quanto
per D? Anche nell'ottica che una tabella del db potrebbe "gonfiarsi"
di molto?
E il mysql gestisce nel modo corretto la virgola in quel modo (cioè
col Punto)?

 conti da php
Degli autentici geni dell'informatica. Allora i DMBS che cosa li hanno
inventati a fare? Tanto valeva memorizzare i dati su file di testo.
Secondo me fai confusione tra 3 cose:
1. il formato di input
2. il datatype da usare nel DBMS
3. la formattazione dell'output
Il formato di input, nel caso di date o numerici, risente solitamente di
pippate tipo separatore decimale punto o virgola, formato data, ecc.
Tutte cose che si risolvono in fase di INSERT/UPDATE azionando un
qualche setting del DB oppure usando delle funzioni di conversione
esplicite.
Il datatype deve essere quello più appropriato per il dato da
memorizzare. Se hai in input dei numeri decimali, deve essere un formato
che ti consente di memorizzare correttamente numeri decimali. Se hai in
input una data, deve essere un formato che ti consente di memorizzare
correttamente date. Questo a prescidere dal formato di input (che può
variare durante il ciclo di vita del progetto in base ai tiramenti di
chi ti fornisce i dati) e al formato di output (che può variare durante
il ciclo di vita del progetto in base ai tiramenti del project manager).
Una volta scelto il datatype corretto e assicurato che i dati vengono
memorizzati correttamente, puoi formattare l'output come ti pare,
mettendo il separatore decimale che più ti aggrada e approssimando al
numero di decimali che preferisci.
HTH
	Y.

 il ciclo di vita del progetto in base ai tiramenti del project manager).
In input ho dei numeri come nell'esempio del mio primo post.
Vorrei capire come settare il db per registrare "pari pari" quei dati
lì. Poi, come dite voi, li tratterò in output... e se necessario anche
in input... ma per l'input davo per scontato che il formato passatomi
sia capibile da mysql (lo è?).
Non mi è stato detto "ti passeremo Tot cifre e Tot decimali" ... mi
arrivano questi numeri e io devo scegliere un formato adeguato nel db
che li contiene.

 Mi date una mano a scegliere il formato più indicato alla situazione?
CREATE TABLE IF NOT EXISTS `numeri` (
   `DG` bigint(11) unsigned NOT NULL AUTO_INCREMENT,
   `decimal` decimal(20,8) NOT NULL,
   PRIMARY KEY (`DG`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='test' AUTO_INCREMENT=3 ;
--
-- Dump dei dati per la tabella `numeri`
--
INSERT INTO `numeri` (`DG`, `decimal`) VALUES
(1, '917.48538351'),
(2, '30.94359970');

 che li contiene.
allora prendi il dato peggiore che ti puo arrivare
da un fondo di caffe ad un fondo sovrano
dalla cell-terap alla goog
non dimenticare il forex dove i pips fanno differenza
p.s.
occhio a ipv6