2012-09-09 46 views
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。我希望通過執行諸如從輸入中剝離$,如果用戶錯誤地輸入$,並四捨五入到最接近的分數來使代碼更好一些。首先,我需要理解爲什麼我沒有得到任何輸出或補充,但是,對嗎?

回答

1

讓我們通過代碼:

subtotal = gets.chomp 

gets.chomp給你一個字符串所以這個:

tax = subtotal * taxrate 

使用String#*而不是乘號:

海峽*整數→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

+0

+0

@ Wolfpack'08:你在說什麼? –

+0

基本上,'taxrate = gets.to_i'返回一個整數,從而產生正確的輸出。在整數的末尾沒有添加直覺/'幾乎不需要'的換行符,就像在字符串中一樣。 –