[ruby-it] operazioni in virgola mobile con ruby

Daniele Alessandri suppakilla a gmail.com
Gio 27 Dic 2007 08:52:06 CET


On Dec 26, 2007 8:52 PM, antonio guerra <guerrantonio a libero.it> wrote:

> Ma printf() e' solo un comando formattazione per la stampa di un numero
> arrotondato?

Non credo ci sia un modo built-in, probabilmente ci sarà qualcosa in
qualche ext ma del resto le classi aperte di Ruby sono belle e se ti
serve solo quello basta sfruttarle :-)

class Float
    def round(precision = nil)
        if precision.nil? then
            super()
        else
            if precision.is_a? Integer and precision > 0 then
                decimals = 10 ** precision
                (self * decimals).round / decimals.to_f
            else
                raise ArgumentError.new("Argument must be a positive integer")
            end
        end
    end
end


irb(main):015:0> f = 34.3456
=> 34.3456
irb(main):016:0> f.round
=> 34
irb(main):017:0> f.round(3)
=> 34.346
irb(main):018:0> f.round(2)
=> 34.35


-- 
Daniele Alessandri
http://www.clorophilla.net/blog/


Maggiori informazioni sulla lista Ml