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与え、あなたに空の文字列を与えます。つまり、あなたはあなたが求めているものを正確に手に入れているのです。あなたは単に間違ったことを求めているのです。

または:を使用subtotalして数値に変換する必要があります。to_ito_f

subtotal = gets.to_f # Or gets.to_i

またはchompを使用する場合は必要ありません。これらのメソッドは、末尾の空白を自動的に無視します。to_ito_f

それはあなたに賢明な価値を与えるはずですtax

于 2012-09-09T04:40:05.353 に答える