Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 514
Torrm Avatar asked May 06 '26 05:05

Torrm


1 Answers

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.

like image 162
Stefan Avatar answered May 09 '26 05:05

Stefan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!