避免在C ++中使用负值

时间:2011-10-17 04:35:43

标签: c++ math

我有以下功能,我试图通过包含if语句来避免负值,但它没有帮助。 ...关于如何解决这个问题的建议...

double G(double S, double X, double r, double div, double k, double T)
{
  double g=0;
  g=Phi(d1(S,X,r,div,k,T))/(exp(-div*T)*S*k*sqrt(T));
 if((isnan)(g) || (isinf)(g) || (g<0)) g=0;
  return g;
}

3 个答案:

答案 0 :(得分:2)

您获得的价值不是负数。 2.17691e-06是2.17691 x 1/1000000 = 0.00000217691的指数表示。 看看exponentiation

如果您不想显示取幂符号,请考虑在显示/使用g之前设置数字的精度。 设置精度的方法之一是here

答案 1 :(得分:1)

你有正确的想法,但语法有点偏。试试这个:

double G(double S, double X, double r, double div, double k, double T)
{
  double g=0;
  g=Phi(d1(S,X,r,div,k,T))/(exp(-div*T)*S*k*sqrt(T));
  if(isnan(g) || isinf(g) || (g<0)) g=0;
  return g;
}

答案 2 :(得分:0)

调用此函数时是否设置了非double类型变量的值? 你收到任何警告吗?这应该给你一个线索。