Ruby/Rails - 将整数转换为浮点数,排除现有的零

3

一定有一个简单的方法来实现这个目标,我有一个包含整数的DB字段,我想将其重新格式化为浮点数以进行显示。

作为一个整数,我的值看起来像 6500,我希望它显示为 65.00

在我的模型中,我尝试通过创建以下方法来实现此目的

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

这会导致以下内容被显示:6500.00

最好的方法是削减初始零或插入小数点?

虽然我想象这是一个ruby相关的问题,但我不确定rails是否已经具备了一个有用的辅助功能?

谢谢。


4
将它除以100。 - Stefan
完全正确。如果你想把它作为答案发表,我可以接受它!有时候简单的解决方案更容易过度复杂化! - Torrm
3个回答

3

您可以将数字除以100:

payment_amount = 6595

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

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

或者您可以将数字转换为字符串并插入小数点:

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

Rails还提供了几个帮助程序来格式化数字:helpers
number_to_currency(65.95)
#=> "$65.95"

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

你可能想要看一下 money-rails gem,它提供了从分到 money 对象的映射。


1

你只需要简单地这样做...

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

我找到了另一个。
amount = self.payment_amount
# => 6500
ans = '%.2f' % (amount/100)
# => "65.00"

这将截断小数点后的数字,返回值将是 65.0 而不是 "65.00" - Stefan

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

就是这样了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接