数学表达式随机向上取整
math expression Randomly rounding up
在下面的代码中,2/5 结果为 0.0 而不是 0.4,这应该是正确答案
require 'rubygems'
require 'dentaku'
expression = '2/5'
calculator = Dentaku::Calculator.new
result = calculator.evaluate(expression).to_f
puts "#{result}"
我正在使用 dentaku 计算数学表达式,可在此处找到此 gem 的文档:https://github.com/rubysolo/dentaku/blob/master/README.md
据我所知,Dentaku 将两个整数的除法视为整数除法。试试 2/5.0
.
请改用 expression = '2.0/5.0',因为缺少“.0”,您的数字可能会被视为整数(您需要浮点数),因此您得到的整数结果为零
你搜索这个问题的答案的第一站应该是官方 documentation for /
:
fix / numeric → numeric_result
Performs division: the class of the resulting object depends on the class of numeric and on the magnitude of the result. It may return a Bignum.
例如:
3/2 # => 1
(3/2).class # => Fixnum
3/2.0 # => 1.5
(3/2.0).class # => Float
如果任一值是浮点数,Ruby 将 return 浮点数:
3.0/2 # => 1.5
(3.0/2).class # => Float
在下面的代码中,2/5 结果为 0.0 而不是 0.4,这应该是正确答案
require 'rubygems'
require 'dentaku'
expression = '2/5'
calculator = Dentaku::Calculator.new
result = calculator.evaluate(expression).to_f
puts "#{result}"
我正在使用 dentaku 计算数学表达式,可在此处找到此 gem 的文档:https://github.com/rubysolo/dentaku/blob/master/README.md
据我所知,Dentaku 将两个整数的除法视为整数除法。试试 2/5.0
.
请改用 expression = '2.0/5.0',因为缺少“.0”,您的数字可能会被视为整数(您需要浮点数),因此您得到的整数结果为零
你搜索这个问题的答案的第一站应该是官方 documentation for /
:
fix / numeric → numeric_result
Performs division: the class of the resulting object depends on the class of numeric and on the magnitude of the result. It may return a Bignum.
例如:
3/2 # => 1
(3/2).class # => Fixnum
3/2.0 # => 1.5
(3/2.0).class # => Float
如果任一值是浮点数,Ruby 将 return 浮点数:
3.0/2 # => 1.5
(3.0/2).class # => Float