저는 특정 가격 (즉, 20.30)을 나타 내기 위해 몇 가지 계산을 실행하려고합니다.플로트 계산에서 십진수를 어떻게 제어합니까?
플로트 # 라운드 메서드를 사용해 보았지만 이러한 값을 보유하고있는 인스턴스 변수는 결국 몇 가지 계산을 거쳐 24.43418과 같은 숫자를 나타내기 시작합니다.
이
내가 @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
임 확실하지으로 평가해야 백분율
class Fixnum
def percentage
self.to_f/100
end
end
에 사용자 입력을 설정하기 위해 만든 다만 방법이다 이 인스턴스 변수를 초기화하고 있다는 사실과 관련이 있지만 @risk_amount가 올바른 두 십진수 값을 반환하지만 객체를 반환하면 내부의 인스턴스 변수에 소수가 실행됩니다. 에서
number_with_precision(@bankroll_amount.to_f, precision: 2)
사용법 : 내가 충분히 c.risk_win 실행하면
c = Client.new 2000, 1
<Client:0x000001018956a0 @bankroll_amount=2000.0, @unit_percentage=0.01, @risk_amount=20.0>
c.risk_win
=> 20.2
은, 결국 2 소수점으로 부동 소수점 숫자의 표시 형식을
c
<Client:0x000001018956a0 @bankroll_amount=2440.3802, @unit_percentage=0.01, @risk_amount=24.4038>