我正在使用图形工具包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
所以我的问题如下:
- 我需要向代码中添加什么才能使应用程序 INPUT 浮动在捕获变量方面点?
- 我需要向代码中添加什么才能使应用程序输出数字四舍五入到第 100 位而不是四舍五入到整数?提前感谢!如果你们需要澄清:要求等,请告诉我!
要将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