# Arrotondamento risultati

**URL:** <https://www.ruby-forum.com/t/arrotondamento-risultati/161312>\
**Category:** IT\
**Created:** [February 25, 2009, 11:03am UTC](https://www.ruby-forum.com/t/arrotondamento-risultati/161312 "2009-02-25T11:03:16Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Niko\_R](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/439d5e/32.png) [@Niko\_R](https://www.ruby-forum.com/u/Niko_R)\
**Post date:** [February 25, 2009, 11:03am UTC](https://www.ruby-forum.com/t/arrotondamento-risultati/161312/1 "2009-02-25T11:03:16Z")

</div>

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.

> **[Yahoo](https://mail.yahoo.com/)**
>
> It's

---

<div class="post-metadata">

**Author:** ![Niko\_R](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/439d5e/32.png) [@Niko\_R](https://www.ruby-forum.com/u/Niko_R)\
**Post date:** [February 25, 2009, 11:10am UTC](https://www.ruby-forum.com/t/arrotondamento-risultati/161312/2 "2009-02-25T11:10:21Z")

</div>

2009/2/25 Niko R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> 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.

puts BigDecimal(“1.021”) - BigDecimal(“1.02”)  
0.001

non so com’è implementata, e che performance ha. prova, se vedi che è  
pesante, cerca una soluzione alternativa.

pietro

---

<div class="post-metadata">

**Author:** ![Niko\_R](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/439d5e/32.png) [@Niko\_R](https://www.ruby-forum.com/u/Niko_R)\
**Post date:** [February 25, 2009, 12:14pm UTC](https://www.ruby-forum.com/t/arrotondamento-risultati/161312/3 "2009-02-25T12:14:58Z")

</div>

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

[http://docs.sun.com/source/806-3568/ncg\_goldberg.html](http://docs.sun.com/source/806-3568/ncg_goldberg.html)

PDF: [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.22.6768](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.22.6768)

---

<div class="post-metadata">

**Author:** ![Niko\_R](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/439d5e/32.png) [@Niko\_R](https://www.ruby-forum.com/u/Niko_R)\
**Post date:** [March 2, 2009, 9:07pm UTC](https://www.ruby-forum.com/t/arrotondamento-risultati/161312/4 "2009-03-02T21:07:37Z")

</div>

io di solito faccio cosÃ¬

format(“%.2f”, [float value] )

Luigi P. wrote:

> 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
> 
> [http://docs.sun.com/source/806-3568/ncg\_goldberg.html](http://docs.sun.com/source/806-3568/ncg_goldberg.html)
> 
> PDF: [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.22.6768](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.22.6768)

---

<div class="post-metadata">

**Author:** ![Niko\_R](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/439d5e/32.png) [@Niko\_R](https://www.ruby-forum.com/u/Niko_R)\
**Post date:** [March 2, 2009, 11:25pm UTC](https://www.ruby-forum.com/t/arrotondamento-risultati/161312/5 "2009-03-02T23:25:40Z")

</div>

On Mon, Mar 2, 2009 at 8:07 PM, Alessandro S.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)wrote:

> io di solito faccio così
> 
> format(“%.2f”, [float value] )

Anche io tendo ad utilizzare il metodo ‘%’, del quale apprezzo parecchio  
la  
potenza  
(link: [class String - RDoc Documentation](http://www.ruby-doc.org/core/classes/String.html#M000785))

“%05d” % 123 #=\> “00123”  
“%-5s: %08x” % [“ID”, self.id] #=\> “ID : 200e14d6”
