Ответ 1
Вы вызываете to_i
, вы получаете целое число.
Попробуйте позвонить to_f
, вы должны получить float.
Для более сложных методов преобразования строк смотрите здесь.
Мне нужно работать с десятичными знаками. В моей программе пользователю нужно поместить число с десятичными знаками для преобразования этого числа.
Проблема: если я пытаюсь преобразовать аргумент в число, я получаю целое число без десятичных знаков.
# ARGV[0] is: 44.33
size = ARGV[0]
puts size.to_i
# size is: 44
# :(
Вы вызываете to_i
, вы получаете целое число.
Попробуйте позвонить to_f
, вы должны получить float.
Для более сложных методов преобразования строк смотрите здесь.
Вы также можете использовать десятичный класс для него
a = '2.45'
Decimal(a)
2.45
UPDATE:
Использовать bigdecimal как @bigtex777:
источник: http://ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html
Заглавные методы конверсии - это хорошо установленная идиум Ruby. Смотрите это замечательное сообщение от Advi Grimm
Integer("641339524823408659")
=> 641339524823408659
Вы также можете использовать sprintf для точного числа десятичных точек:
a = 2.45
p sprintf "%.6f", a #=> "2.450000"