Convert string to decimal number in ruby

RubyNumbersDecimal

Ruby Problem Overview


I need to work with decimals. In my program, the user need to put a number with decimals to convert that number.

The problem is: If I try to convert the argument into a number I get a integer without decimals.

# ARGV[0] is: 44.33

size = ARGV[0]

puts size.to_i
# size is: 44
# :(

Ruby Solutions


Solution 1 - Ruby

You call to_i, you get integer.

Try calling to_f, you should get a float.

For more string conversion methods, look here.

Solution 2 - Ruby

If you want more accurate answer with the calculation to avoid bug like this https://www.codecademy.com/en/forum_questions/50fe886f68fc44056f00626c you can use conversion to decimal example :

require 'bigdecimal'
require 'bigdecimal/util'

size = ARGV[0]
size = size.to_d

this should make the printed number become decimal but if you want to make it as float again just put this to_f again

size=size.to_f

puts size

Solution 3 - Ruby

You also can use the decimal class for it

a = '2.45'
Decimal(a) # => 2.45

UPDATE:

Use bigdecimal as @bigtex777 mentioned:

source: http://ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html

Solution 4 - Ruby

Capitalized conversion methods are a well-established Ruby idiom. See this great post from Advi Grimm

Integer("641339524823408659")
=> 641339524823408659

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionElektroStudiosView Question on Stackoverflow
Solution 1 - RubySergio TulentsevView Answer on Stackoverflow
Solution 2 - RubyTau-fan Ar-ifView Answer on Stackoverflow
Solution 3 - RubylucianosousaView Answer on Stackoverflow
Solution 4 - RubyMegaTuxView Answer on Stackoverflow