2010-09-04 7 views
1

Je suis en train d'imprimer un nombre flottant, qui a la valeur 5Ruby imprimer un flotteur avec des chiffres en option

Ce que je reçois quand il l'imprimer est 5.0, donc ma question est:

Comment puis-je faire en sorte que, si la valeur est juste 5, il va juste imprimer 5 sans le .0 après, et si c'est 5.2 ou alors, il affichera cela?

J'ai regardé autour de moi, mais tout ce que j'ai trouvé était soit de le forcer d'une façon ou d'une autre.

Quelqu'un peut-il m'aider dans la bonne direction? Merci :)

Répondre

2

Essayez ceci:

number.to_s.gsub(/\.?0*$/, '') 

Cela même travailler pour number = "5.30" # => '5.3'.

+0

Nice, n'ont pas encore à propos de l'utilisation de regex pour le problème. –

1

Un couple de solutions sales.

1.

a = 5.0 
puts a.ceil == a ? a.ceil : a 

2.

5.1.to_s.chomp ".0" #=> 5.1 
5.0.to_s.chomp ".0" #=> 5 
+0

Belle solution lisible. J'avais besoin de le modifier juste un peu pour le faire fonctionner: a.ceil == a? a.ceil.to_i: un –

0

Pourquoi voulez-vous faire cela? 5 et 5.000 transmet différents messages, car ils ont des nombres différents de significant figures. Le premier indique "cinq donne ou moins la moitié" tandis que le dernier indique "cinq au millième le plus proche".

+0

Pourquoi le premier devrait-il indiquer «cinq donnent ou moins la moitié»? L'absence de chiffres décimaux n'implique pas nécessairement l'arrondi. –

+0

@Mladen: Pouvez-vous développer davantage? –

+0

la raison en est que l'utilisateur peut donner une estimation de 5 heures, mais aussi 3,5 heures. Pour garder la vue propre, je ne veux pas écrire 5.0 que le .0 est juste encombrer pour l'utilisateur –

Questions connexes