0

这是我的代码:

print('What amount would you like to calculate tax for?  ')
subtotal = gets.chomp
taxrate = 0.078
tax = subtotal * taxrate
puts "Tax on $#{subtotal} is $#{tax}, so the grand total is $#{subtotal + tax}."

第一个输出:What amount would you like to calculate tax for?

输入:100

最终输出:Tax on $100 is $, so the grand total is $100.

我相信我应该得到一个税率$7.79999999和总计107.7999999。我想通过做一些事情来使代码更好一点,例如从输入中删除 $,如果用户错误地输入 $,并四舍五入到最接近的分。首先,我需要了解为什么我没有得到任何输出或添加,对吧?

4

1 回答 1

1

让我们看看你的代码:

subtotal = gets.chomp

gets.chomp给你一个字符串,这样:

tax = subtotal * taxrate

是使用String#*而不是相乘的数字:

str * 整数 → new_str

复制—返回一个新String的包含接收器的整数副本。

但是taxrate.to_i会给你零并any_string * 0给你一个空字符串。所以你得到的正是你所要求的,你只是在要求错误的东西。

您需要使用or转换subtotal为数字:to_ito_f

subtotal = gets.to_f # Or gets.to_i

chomp如果使用to_ior ,则不需要to_f,这些方法将自行忽​​略尾随空格。

这应该给你一个合理的价值tax

于 2012-09-09T04:40:05.353 回答