277 messaggi dal 13 giugno 2001
Ciao;

Stò impazzendo per poter scrivere in un campo MySql di tipo Double con 2 decimali un importo in euro.

Se ad esempio dovrei scrivere questo importo: 42.496,92 nel db mi trovo scritto 42496 o provato in tutti i modi ma nulla.

Sbaglio qualcosa?

Carmen
1.976 messaggi dal 27 luglio 2005
Contributi
salve Carmen,
carmen ha scritto:
Ciao;

Stò impazzendo per poter scrivere in un campo MySql di tipo Double con 2 decimali un importo in euro.

Se ad esempio dovrei scrivere questo importo: 42.496,92 nel db mi trovo scritto 42496 o provato in tutti i modi ma nulla.

Sbaglio qualcosa?


non sono pratico di MySQL, ma vedo, http://www.risorse.net/mysql/tipi_campi_numerici.asp, che il tipo double puo' specificare sial la precision che la scale, dove per scale si intende il massimo numero di decimali che possono essere archiviati nel dominio definito...
mi viene quindi da pensare che tu abbia definito l'attributo con uno scale = 0, e quindi avvenga ovviamente un troncamento nel momento dell'assegnazione.. prova a verificare tale evenienza..
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
277 messaggi dal 13 giugno 2001
Ciao,

Io sinceramente non capisco come impostare ad esempio un compo numerico (double o float) nel modo seguente: FLOAT(9,2) o DOUBLE(9,2).

Questo indica a MySQL di salvare fino a 9 cifre per la parte intera di un numero e 2 per quella decimale.

Queste impostazioni bisogna darli al momento della creazione del campo nel db, oppure tramite query di inserimento all'atto della registrazione dei dati.

Nella prima ipotesi, io non ci riesco perchè, quando creo il campo, posso impostare il numero dei decimali, non posso dare al campo (9,2)

Che devo fare????

PS. Per il database io uso mascon

Carmen
301 messaggi dal 31 maggio 2006
ciao
float(9,2) o decimal(9,2) impostano rispettivamente due campi di lunghezza TOTALE 9 di cui 2 decimali. Il primo numero indica la lunghezza totale del campo.

naturalmente queste impostazioni si possono dare SOLO in fase di creazione tabella, non tramite query di inserimento

prova a creare (con uno script sql, non tramite gui mascon) una tabella di prova con impostati i giusti valori

CREATE TABLE test (
id INT(10) NOT NULL AUTO_INCREMENT,
numero FLOAT(10,2) NULL,
PRIMARY KEY (id)
)
301 messaggi dal 31 maggio 2006
ciao
link alla documentazione ufficiale di mysql
http://dev.mysql.com/doc/mysql/en/create-table.html
277 messaggi dal 13 giugno 2001
Nulla di fatto.

Nel campo DOUBLE(10,2) se le passo un valore del tipo: 42.496,92

nel db mi trovo 42,5 anche se al posto della virgola metto il punto non cambia nulla.

Stavo penzando se magari in MySql esista un campo testo/numero che memorizza i dati così come io li scrivo, ma se ad esempio dovrei fare una Sum(nomecampo) mi faccia la somma del campo.

Carmen
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
Carmen wrote:
Nulla di fatto.

Nel campo DOUBLE(10,2) se le passo un valore del tipo: 42.496,92
nel db mi trovo 42,5 anche se al posto della virgola metto il punto non cambia nulla.

Stavo penzando se magari in MySql esista un campo testo/numero che memorizza i dati così come io li scrivo, ma se ad esempio dovrei fare una Sum(nomecampo) mi faccia la somma del campo.

solitamente i dbms non accettano alcuna "punteggiatura", ma solo il separatore decimale, che di solito e' il "." ...
il resto, cioe' la rappresentazione numerica formattata, e' altra cosa, che dipende dalle impostazioni di lingua, dalla cultura etc.. e per questo motivo non viene interpretato..
non sei di fronte, ad esempio, ad un tipo .Net dove puoi utilizzare un metodo .Parse (...) che accetta tra i parametri anche le informazioni di cultura per interpretare i separatori delle migliaia e dei decimali.. togli quindi tutti gli "orpelli" e passa il numero come questo in effetti e'.. un numero evenutalmente con dei decimali, e basta..
se proprio ti serve, provvedi alla sua rappresentazione "testuale" (con i separatori delle migliaia) la' dove ti serve, quindi ad esempio in una SELECT, ma non penso che neanche MySQL abbia una tale funzionalita' di rappresentazione (ma potrei sbagliarmi, visto che in effetti non lo conosco affatto)... oppure, meglio ancora, lato client, cioe' nell'applicazione che consuma i dati..
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
301 messaggi dal 31 maggio 2006
ciao

Nel campo DOUBLE(10,2) se le passo un valore del tipo: 42.496,92 

nel db mi trovo 42,5 anche 


è giusto se tu inserisci il numero 42.496,92 il db considera solo il punto come separatore decimale, ti trovi 42,5 che è 42.49 arrotondato

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.