Ciao,
Chiedo lumi anche qui per questo problema a cui no riesco a venire a
capo (spippolo da poco tempo con rails)
i numeri con piu di uno zero ai decimali vengono troncati al primo.
Ho bisogno di lavorare con numeri con 3 cifre decimali,sempre e cmq.
Nella mia migrazione ho quindi usato il tipo decimal con :precision => 3
Se inserisco nella mia form un numero questo viene automaticamente
portato a 3 cifre decimali nel database, ovvero:
se scrivo 123456 nel DB mi ritroverò 123456.000
e fin qui tutto bene, il problema salta fuori quando vado ad utilizzarlo
nel mio controller, devo scriverlo in un file di testo convertendolo in
stringa, e facendo questo nel mio file di testo trovo 123456.0
se i decimali sono diversi da 0 tutto funziona bene (es 123456.012 va
bene)
come posso fare per mantenere i 3 zeri finali?
Il giorno 04 agosto 2009 10.45, Luca C.[email protected] ha
scritto:
se scrivo 123456 nel DB mi ritroverò 123456.000
e fin qui tutto bene, il problema salta fuori quando vado ad utilizzarlo
nel mio controller, devo scriverlo in un file di testo convertendolo in
stringa, e facendo questo nel mio file di testo trovo 123456.0
se i decimali sono diversi da 0 tutto funziona bene (es 123456.012 va
bene)
è solo un problema di conversione in stringa:
a = BigDecimal.new “3”
puts a
0.3E1
puts “%.3f” % a
3.000
quindi usando “%.3f” non dovresti avere problemi.
pietro
Pietro G. wrote:
Il giorno 04 agosto 2009 10.45, Luca C.[email protected] ha
scritto:
se scrivo 123456 nel DB mi ritrover� 123456.000
e fin qui tutto bene, il problema salta fuori quando vado ad utilizzarlo
nel mio controller, devo scriverlo in un file di testo convertendolo in
stringa, e facendo questo nel mio file di testo trovo 123456.0
se i decimali sono diversi da 0 tutto funziona bene (es 123456.012 va
bene)
� solo un problema di conversione in stringa:
a = BigDecimal.new “3”
puts a
0.3E1
puts “%.3f” % a
3.000
quindi usando “%.3f” non dovresti avere problemi.
pietro
Ok ho provato in console e così funziona… grazie mille
Adesso devo solo capire il modo migliolre per fare la conversione dentro
al mio controller… per adesso sono uscito con questa:
a3 = sprintf “%.3f”, a
e poi concatenare a3 al resto della stringa che devo infilare nel
testo…
vediamo cosa viene fuori
Grazie Ancora
Luca
Il giorno 04 agosto 2009 11.14, Luca C.[email protected] ha
scritto:
a3 = sprintf “%.3f”, a
va bene anche
a3 = “%.3f” % a
e poi concatenare a3 al resto della stringa che devo infilare nel
testo…
“ecco qui un po’ di testo, in cui vado a infilare #{”%.3f" % a} senza
concatenazioni."
oppure, per renderlo più chiaro,
numerodecimale = “%.3f” % a
“ecco qui un po’ di testo, in cui vado a infilare #{numerodecimale}
senza concatenazioni.”
pietro
Pietro G. wrote:
Il giorno 04 agosto 2009 11.14, Luca C.[email protected] ha
scritto:
a3 = sprintf “%.3f”, a
va bene anche
a3 = “%.3f” % a
Ancora meglio, in questo modo lo posso inserire direttamente nel codice
che genera la riga
e poi concatenare a3 al resto della stringa che devo infilare nel
testo…
“ecco qui un po’ di testo, in cui vado a infilare #{”%.3f" % a} senza
concatenazioni."
Vedi commento sopra
oppure, per renderlo pi� chiaro,
numerodecimale = “%.3f” % a
“ecco qui un po’ di testo, in cui vado a infilare #{numerodecimale}
senza concatenazioni.”
pietro
Grazie ancora, sapevo che probabilmente era di facile soluzione ma ci
stavo sbattendo la testa da un pò