我试图运行一些计算以表示特定的价格(即20.30)。如何在浮点计算中控制小数位数?
我已经尝试了Float#round方法,但是包含这些值的实例变量最终会在几次计算后开始表示看起来像24.43418的数字。
这仅仅是我创建把一个用户输入一个百分比
class Fixnum
def percentage
self.to_f/100
end
end
的@bankroll_amount和@risk_amount值应计算到两位小数点
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.risk_win的是,它最终会返回
c
<Client:0x000001018956a0 @bankroll_amount=2440.3802, @unit_percentage=0.01, @risk_amount=24.4038>