我使用Green Shoes(图形工具包)在Ruby中构建一个简单的计算器。此计算器应该与标准Windows计算器类似,能够对整数和小数(分数)执行*/+=
函数,并将输出值四舍五入到第100位。
到目前为止,计算器可以加/减/乘/除整数和输出整数。例如,6/5=1
,8/3=2
和1/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
所以我的问题如下:
答案 0 :(得分:3)
将String
转换为Float
:
"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