2016-01-14 46 views
0

我正在使用Green Shoes,一個圖形工具包在Ruby中構建一個簡單的計算器。此計算器的工作方式與標準Windows計算器類似,可以對整數和小數(分數)執行*/+=函數,並將輸出值舍入到第100位。構建一個Ruby計算器>小數點存在的問題

到目前爲止,計算器可以添加/減去/乘/除整數和輸出整數。例如,6/5=1,8/3=21/2=0。這是第一個問題,因爲我希望計算器能夠輸出四捨五入到第100位的值。

第二個問題是關於輸入的,因爲當輸入值時,計算器當前不會識別浮點數。這可能是由於我沒有爲我的.十進制按鈕分配任何變量/函數。

我的代碼如下:

require 'green_shoes' 

Shoes.app(title: "Ford's calculator", width: 200, height: 260) do 
    number_field = nil 
    @number = 0 

    flow width: 200, height: 260 do 
    flow width: 0.7, height: 0.2 do 
     number_field = para @number, margin: 10 
    end 

    flow width: 0.3, height: 0.2 do 
     background rgb(232, 161, 0) 

     button 'Clr', width: 1.0, height: 1.0 do 
     @number = 0 
     number_field.replace(@number) 
     end 
    end 

    flow width: 1.0, height: 0.8 do 
     background rgb(50, 205, 50) 

     %w(7 8 9 + 4 5 6 - 1 2 3/0 . = *).each do |btn| 
     button btn, width: 50, height: 50 do 
      case btn 
      when /[0-9]/ 
       @number = @number.to_i * 10 + btn.to_i 

      when '=' 
       @number = @previous.send(@op, @number) 
      else 
       @previous, @number = @number, nil 
       @op = btn 
      end 

      number_field.replace(@number) 
     end 
     end 
    end 
    end 
end 

所以我的問題如下:

  1. 什麼我需要添加到我的代碼,以使應用程序輸入方面浮動 點捕獲變量?
  2. 我需要添加哪些代碼才能使應用輸出數字 四捨五入到第100位而不是四捨五入到整數? 在此先感謝!如果有任何澄清,你們需要重新:要求等,讓我知道!
+0

爲什麼這個問題downvoted? – VoronoiPotato

回答

3

要轉換StringFloat

"3.41".to_f # 3.41 
@input = @input.to_f # Convert String @input to a Float 

要打印數量,最大X小數,使用round

3.412631.round(2) # 3.41 
3.412631.round(100) # 3.412631