Ruby / Rails - 将整数转换为浮点数,不包括现有的零

时间:2016-12-08 12:54:39

标签: ruby-on-rails ruby

必须有一个简单的方法来实现这一点,我有一个包含整数的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是否已经有一个方便的助手了?

谢谢。

3 个答案:

答案 0 :(得分:2)

您可以将数字除以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 :(得分:1)

你这样做只是......

 string insertquery = "INSERT INTO [dbo].[tdn_Winners] ([MemberId] ,
[PrizeNodeId] ,[CampaignNodeId] ,[TransactionId])  VALUES(@MemberId, 
@PrizeNodeId, @CampaignNodeId, @TransactionId)";

我找到另一个

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

答案 2 :(得分:0)

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

一切都好!