dire que j'ai l'un des numéros suivants: p>
230957 ou 83487 ou 4785 P>
Qu'est-ce qu'un moyen de rubis je pourrais les retourner comme 300000 ou 90000 ou 5000, respectivement? p>
8 Réponses :
Il semble un peu laid, mais comme premier coup (tours up em> à chaque fois) ... meilleur (rondes correct): p>
irb(main):022:0> round_up(4785) => 5000 irb(main):023:0> round_up(83487) => 90000 irb(main):024:0> round_up(230957) => 300000
Mikej, merci d'avoir souligné que ma "solution" n'élargissait pas. J'ai supprimé toute la solution pour empêcher la confusion.
@John: Je serais intéressé par votre solution, car je veux que quelque chose qui va tourner au plus proche plutôt que rond.
@Andrew Si vous modifiez la condition dans ma méthode de si restante == 0 code> à
si reste == 0 || RESTE
Je n'ai réellement effectué aucun codage dans Ruby, mais vous seriez capable de le faire avec une fonction d'arrondi standard si vous le poussez au chiffre que vous vouliez d'abord.
Exemple: P>
2 or 3 * 100000(the resolution you want) = 200000 or 300000 respectively.
>> [230957, 83487, 4785].collect{|i|round_to_significant_digit(i, 2)} => [230000, 83000, 4800] >> [230957, 83487, 4785].collect{|i|round_to_significant_digit(i, 3)} => [231000, 83500, 4790]
Dans les rails, vous pouvez également aimer l'aide "Number_To_human", qui choisit automatiquement une bonne dimension à tourner à. p>
Math.Round accepte les nombres négatifs. Si vous recherchez seulement le 10 le plus proche, vous pouvez faire Le seul inconvénient d'être qu'il n'ya aucun moyen d'incorporer le plafond ici, il ne reste donc pas toujours - (my_num) .round (-1) code>. P>
4.Round (-1) code> retournera 0. P>
Une suggestion simple: pour l'utiliser: p>
Voici ma version:
round(0) # 0 round(1) # 10 round(9) # 10 round(10) # 20 round(-10) # -20 round(100) # 1000 round(1, 1000) # 1000 round(499, 1000, 500) # 0 round(500, 1000, 500) # 1000
Voici quelques exemples d'utilisation: p>