构建 Ruby 计算器 > 小数问题



我正在使用图形工具包Green Shoes在Ruby中构建一个简单的计算器。此计算器的工作方式应类似于标准 Windows 计算器,能够对整数和小数(分数)执行*/+=函数,输出值四舍五入到第 100 位。

到目前为止,计算器可以加/减/乘/除整数并输出整数。例如,6/5=18/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. 我需要向代码中添加什么才能使应用程序 INPUT 浮动在捕获变量方面点?
  2. 我需要向代码中添加什么才能使应用程序输出数字四舍五入到第 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

最新更新