我不能用红宝石乘以小数

时间:2014-01-06 14:07:15

标签: ruby

我正在制作兴趣计算器

我去10 * .10 * 10然后我得到0所以我如何在没有0的情况下乘以小数?

我的源代码是

 def interest()
    puts "Type the original loan."
    loan = gets.chomp.to_i
    puts "Type the amount of interest in decimal."
    interest = gets.chomp.to_i
    puts "How many years?"
    years = gets.chomp.to_i
    puts "Your interest is"
    puts loan * interest * years
end

interest()

3 个答案:

答案 0 :(得分:6)

你有integer,所以结果也是integer。你可以使用'to_f但要注意,处理金钱或其他任何需要精确的东西都不好。请改用BigDecimal

  require 'bigdecimal'
  def interest
    puts "Type the original loan."
    loan = BigDecimal(gets.chomp)
    puts "Type the amount of interest in decimal."
    interest = BigDecimal(gets.chomp)
    puts "How many years?"
    years = BigDecimal(gets.chomp) # suggested in comment, agreed with that
    puts "Your interest is"
    puts loan * interest * years
  end

What's the difference between them

答案 1 :(得分:3)

这样做

interest = gets.chomp.to_f

.to_i将字符串更改为整数。整数是一个整数。

.to_f是浮动的,浮点数是一个允许小数位的数字

答案 2 :(得分:1)

问题是当你真的不想在这里使用整数时,你正在使用.to_i。整数表示没有小数部分,因此当您调用.10.to_i时,它会将其截断为0。

考虑使用.to_f代替

的浮点数