Ruby on rails 如何控制浮点计算中的小数?
为了表示一个特定的价格(即20.30),我试图进行一些计算 我尝试过Float#round方法,但持有这些值的实例变量经过几次计算后,最终开始表示看起来像24.43418的数字 这只是我创建的将用户输入转换为百分比的方法Ruby on rails 如何控制浮点计算中的小数?,ruby-on-rails,ruby,ruby-on-rails-4,console,irb,Ruby On Rails,Ruby,Ruby On Rails 4,Console,Irb,为了表示一个特定的价格(即20.30),我试图进行一些计算 我尝试过Float#round方法,但持有这些值的实例变量经过几次计算后,最终开始表示看起来像24.43418的数字 这只是我创建的将用户输入转换为百分比的方法 class Fixnum def percentage self.to_f / 100 end end @bankroll\u金额和@risk\u金额的计算值应为两个小数点 class Client def initialize(bankroll, unit)
class Fixnum
def percentage
self.to_f / 100
end
end
@bankroll\u金额和@risk\u金额的计算值应为两个小数点
class Client
def initialize(bankroll, unit)
@bankroll_amount = bankroll.to_i.round(2)
@unit_percentage = unit.to_i.percentage
default_risk_amount.round(2)
evaluate_default_unit!.round(2)
end
def default_risk_amount
@risk_amount = @unit_percentage * @bankroll_amount
@risk_amount.round(2)
end
# simulates what an updated bankroll looks like after a win based on clients "unit" amount
def risk_win
@bankroll_amount = @bankroll_amount + @risk_amount
@bankroll_amount.round(2)
evaluate_default_unit!.round(2)
end
# simulates what a clients updated bankroll looks like after a loss based on clients "unit" amount
def risk_loss
@bankroll_amount = @bankroll_amount - @risk_amount
evaluate_default_unit!
end
def evaluate_default_unit!
@risk_amount = @unit_percentage * @bankroll_amount.round(2)
end
end
我不确定这是否与我正在初始化这些实例变量有关,但是@risk_amount返回了正确的两位小数,但是当我返回对象时,里面的实例变量有运行小数
c = Client.new 2000, 1
<Client:0x000001018956a0 @bankroll_amount=2000.0, @unit_percentage=0.01, @risk_amount=20.0>
c.risk_win
=> 20.2
c=Client.new 2000,1
c、 冒险赢
=> 20.2
当我运行c.risk_赢得足够多时,它最终会返回
c
<Client:0x000001018956a0 @bankroll_amount=2440.3802, @unit_percentage=0.01, @risk_amount=24.4038>
c
用于将浮点数的显示格式设置为小数点后2位:
number_with_precision(@bankroll_amount.to_f, precision: 2)
rails控制台中的用法:
[1] pry(main)> include ActionView::Helpers::NumberHelper
=> Object
[2] pry(main)> number_with_precision(2440.3802, precision: 2)
=> "2440.38"
用于将浮点数的显示格式设置为小数点后2位:
number_with_precision(@bankroll_amount.to_f, precision: 2)
rails控制台中的用法:
[1] pry(main)> include ActionView::Helpers::NumberHelper
=> Object
[2] pry(main)> number_with_precision(2440.3802, precision: 2)
=> "2440.38"
用于将浮点数的显示格式设置为小数点后2位:
number_with_precision(@bankroll_amount.to_f, precision: 2)
rails控制台中的用法:
[1] pry(main)> include ActionView::Helpers::NumberHelper
=> Object
[2] pry(main)> number_with_precision(2440.3802, precision: 2)
=> "2440.38"
用于将浮点数的显示格式设置为小数点后2位:
number_with_precision(@bankroll_amount.to_f, precision: 2)
rails控制台中的用法:
[1] pry(main)> include ActionView::Helpers::NumberHelper
=> Object
[2] pry(main)> number_with_precision(2440.3802, precision: 2)
=> "2440.38"
这是只显示两个小数点的一种方法
price = 20.21340404
"%.2f" % price
# => 20.23
另请参见RAILSnumber\u to\u currency
helpersActionView::helpers::NumberHelper
这是只显示两个小数点的一种方法
price = 20.21340404
"%.2f" % price
# => 20.23
另请参见RAILSnumber\u to\u currency
helpersActionView::helpers::NumberHelper
这是只显示两个小数点的一种方法
price = 20.21340404
"%.2f" % price
# => 20.23
另请参见RAILSnumber\u to\u currency
helpersActionView::helpers::NumberHelper
这是只显示两个小数点的一种方法
price = 20.21340404
"%.2f" % price
# => 20.23
另请参见RAILSnumber\u to\u currency
helpersActionView::helpers::NumberHelper