2013-12-14 16 views
20

Come arrotondare un numero intero a un multiplo di dieci?Ruby 2.0 - Arrotondare un numero intero al multiplo più vicino di 10

Ho provato integer.round(0.1) ma fornisce il numero decimale più vicino.

Esempio: 3 dovrebbe restituire 0, 55 dovrebbe restituirla 60.

Esiste un metodo che arrotondare al più vicino multiplo di 10?

+0

'10 * ((x + 5)/10)' potrebbe funzionare per numeri interi non negativi. –

risposta

38

Integer#round ha la funzionalità.

Si passa un numero negativo a round per indicare a quale cifra del 10 si desidera arrotondare. Per esempio:

rotonda con un'approssimazione di 10:

55.round(-1) # => 60 

per arrotondare al più vicino 100:

550.round(-2) # => 600 
+0

Ciò comporterà una cifra significativa e non necessariamente una precisione di "decine". –

+0

Ohh ... Così faccio il numero _negative_. Grazie! –

+0

@AaronCronin Non ti ho preso .. :( –

11

Si può solo dividere per 10, rotondo, poi moltiplicare per 10:

nearest = (x/ 10).round * 10 
+0

'(15/10) .round * 10' restituisce' 10' ma dovrebbe restituire '20'. –

+2

Questo è solo a causa della divisione di interi che tronca il decimale, se dividi per '10.0' invece arriverà a 20. –

+2

Se vuoi arrotondare per difetto non importa quale (questo era un requisito per me), potresti fare (x/10.0). Piano * 10 – sixty4bit

Problemi correlati