Ciao a tutti!
Devo sviluppare un piccolo programma che faccia dei controlli da 4 fonti
diverse ( 2 DB e 2 server http ) e che in caso di grosse discrepanze tra
i valori ottenuti, mi segnali un errore.
Vorrei fare in modo che se ricevo valori molto simili come ad esempio:
6,5
6,499
6,51
6,509
non venissero segnalati come errore. Conoscete qualche gemma/metodo che
mi permetta di “arrotondare” i risultati ottenuti ?
Grazie
Passa a Yahoo! Mail.
La webmail che ti offre GRATIS spazio illimitato,
antispam e messenger integrato.
non venissero segnalati come errore. Conoscete qualche gemma/metodo che mi permetta di “arrotondare” i risultati ottenuti ?
per un’arrotondamento alla buona, puoi ad esempio fare: (numero *
10).round.
purtroppo, però, i float di ruby lasciano un po’ a desiderare quando
si tratta di numeri decimali:
puts 1.021 - 1.02
0.00099999999999989
per questo esiste la classe BigDecimal, che è un po’ scomoda da usare
in certi casi, perché il costruttore accetta una stringa; però direi
che nel tuo caso va benissimo, visto che i numeri, immagino, ti
arrivano spesso in forma di stringa.
Il giorno 25/feb/09, alle ore 11:02, Niko R. ha scritto:
Grazie
Dipende dalla natura del tuo problema. Se si tratta di soldi prova ad
usare la gemma money, se invece sono valori reali allora stabilisci
una tolleranza e controlla
(val1 - val2).abs < tolerance
piuttosto che l’uguaglianza.
E primi di prendertela con i float assicurati di conoscere cosa e’
scritto in
Il giorno 25/feb/09, alle ore 11:02, Niko R. ha scritto:
Grazie
Dipende dalla natura del tuo problema. Se si tratta di soldi prova ad
usare la gemma money, se invece sono valori reali allora stabilisci
una tolleranza e controlla
(val1 - val2).abs < tolerance
piuttosto che l’uguaglianza.
E primi di prendertela con i float assicurati di conoscere cosa e’
scritto in