构建Ruby计算器>小数问题

时间:2016-01-14 14:23:17

标签: ruby decimal

我使用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位而不是四舍五入到整数? 提前致谢!如果有任何澄清,你们需要re:要求等,请告诉我!

1 个答案:

答案 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