Torrm
Torrm

Reputation: 153

Ruby/Rails - Converting an integer into a float excluding existing zeros

There must be a simple way to achieve this, I have an DB field containing an integer and I want to reformat it into a float to display.

As an integer my value looks like 6500 and I want it to display as 65.00

Within my model I have attempted to achieve this by creating the following method

def get_payment_amount_as_number
  amount = self.payment_amount
  return '%.02f' % self.payment_amount.to_f
end

Which results in the following being displayed: 6500.00

What would the best approach be to either strip the initial zeroes or to simply insert a decimal point?

Whilst I imagine this a ruby related question, I am not sure if rails has a handy helper already in place?

Thank you.

Upvotes: 3

Views: 4804

Answers (3)

Sergio Belevskij
Sergio Belevskij

Reputation: 2947

int_value = 6500
float_value = float_value = '%.2f' % (int_value / 100.0)
puts int_value: int_value, float_value: float_value

it's all!

Upvotes: 0

Karthick Nagarajan
Karthick Nagarajan

Reputation: 1345

You do this simply ...

def get_payment_amount_as_number
  amount = self.payment_amount / 100
  #to convert amount to float
  amount.to_f
end

I find another one

amount = self.payment_amount
# => 6500
ans = '%.2f' % (amount/100)
# => "65.00"

Upvotes: 1

Stefan
Stefan

Reputation: 114158

You could divide the number by 100:

payment_amount = 6595

'%.02f' % payment_amount.fdiv(100)
#=> "65.95"

'%.02f' % (payment_amount / 100.0)
#=> "65.95"

Or you could convert the number to a string and insert a decimal point:

payment_amount.to_s.rjust(3, '0').insert(-3, '.')
#=> "65.95"

Rails also provides several helpers to format numbers:

number_to_currency(65.95)
#=> "$65.95"

number_to_currency(1000)
#=> "$1,000.00"

And you might want to take a look at the money-rails gem which provides a mapping from cents to money objects.

Upvotes: 3

Related Questions