我正在查看我的代码,每次D1最终都是NaN.代码看起来很好,我完全难过......
double D1;
Data Data = new Data();
PriceSpot = 40;
Data.PriceStrike = 40;
Data.RateInterest = .03;
Data.Volatility = .3;
Data.ExpriationDays = 300;
D1 =
(
Math.Log(PriceSpot/Data.PriceStrike) +
(
(Data.RateInterest + (Math.Pow(Data.Volatility,2)/2)) *
(Data.ExpirationDays/365)
)
) /
(
Data.Volatility *
Math.Pow(Data.ExpirationDays/365,.5)
);
Run Code Online (Sandbox Code Playgroud)
Eli*_*sha 11
Data.Volatility * Math.Pow(Data.ExpirationDays/365,.5) 从300/365起为0,因为int等于0
假设ExpriationDays属性int确实是类型,它将使整个表达式为0.
例如:
[Test]
public void Test()
{
var val = 300 / 365;
Assert.That(val, Is.EqualTo(0));
}
Run Code Online (Sandbox Code Playgroud)
关于除以0的一些评论:
除以两个0整数时,将在运行时抛出异常:
[Test]
public void TestIntDiv()
{
int zero = 0;
int val;
Assert.Throws<DivideByZeroException>(() => val = 0 / zero);
}
Run Code Online (Sandbox Code Playgroud)
除以两个0的两倍后,结果将是NaN,并且不会抛出任何异常:
[Test]
public void TestDoubleDiv()
{
double zero = 0;
double val = 0 / zero;
Assert.That(val, Is.NaN);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
964 次 |
| 最近记录: |