"неправильное количество аргументов" ArgumentError при использовании round - PullRequest
8 голосов
/ 12 октября 2010

Я пытаюсь перевести температуру из Фаренгейта в Цельсий:

puts 'Convertir grados Fahrenheit a Celcius'
STDOUT.flush
x = gets.chomp

aprox = (x * 100.0).round(2) / 100.0

resultado = (aprox-32)/1.8

puts resultado

Я использую правильную формулу для перевода Фаренгейта в Цельсий:

Цельсий = Фаренгейт - 32 /1.8

Однако, когда я запускаю это в консоли, я получаю следующую ошибку:

`round ': неверное количество аргументов (1 для 0) (ArgumentError)

Я пробовал разные вещи, но я не понимаю, почему это не работает.

Ответы [ 3 ]

11 голосов
/ 12 октября 2010

В версии ruby ​​до 1.9.0 round не принимает аргументов.Она округляется до ближайшего целого числа (см. Документацию о числах с плавающей запятой и использовании округления )

Используйте это вместо:

aprox = (x * 100).round() / 100.0

Вся точка умножения и деленияна 100 округляет последние две цифры x.

5 голосов
/ 13 октября 2010

Вы не указываете, какую версию Ruby вы используете.Это имеет значение, потому что в Ruby до 1.9 Float # round не принимал параметр.В 1.9+ это делает.

>> RUBY_VERSION #=> "1.9.2"
>> pi = 3.141 #=> 3.141
>> pi.round #=> 3
>> pi.round(1) #=> 3.1
>> 3.141.round(1) #=> 3.1
2 голосов
/ 14 октября 2010

activesupport (часть рельсов) также дает Float # round (точность)

...