Le 06 novembre à 17:33, Eric Jacoboni a écrit :
> Immédiatement, je dirai :
>
>>> format("%.2f", 1.5678).to_f
> => 1.57
>>> format("%.3f", 1.5678).to_f
> => 1.568
>
> Mais j'avoue ne pas avoir exploré toutes les possibilités.
Oui... et non.
Attention au fait qu'on parle de cet animal mythique qu'est le float,
avec tous les problèmes de calcul en virgule flottante qu'on peut
imaginer.
Arrondir à deux décimales pour l'affichage, c'est bien. Faire les
calculs avec les arrondis peut amener à des surprises :
>> 44.0 + (91.0 / 100.0) + 10.01
=> 54.92
>> 44.0 + (91.0 / 100.0) + 10.01 == 54.92
=> false
>> sprintf "%.16g", 44.0 + (91.0 / 100.0) + 10.01
=> "54.91999999999999"
Dans certaines applications sensibles - les cas classiques d'arrondis
sont dans des programmes qui ont une gestion monétaire - il est
conseillé de travailler soit en entiers et de diviser ensuite par 10^n
ou, en Ruby, de faire des classes spécialisées soi-même (exercice
amusant en soi, d'ailleurs... :) ).
Fred
--
I feel drunk but I'm sober, I'm young and I'm underpaid
I'm tired but I'm working, yeah
I care but I'm restless, I'm here but I'm really gone
I'm wrong and I'm sorry, baby (Alanis Morissette, Hand in My Pocket)