繁体   English   中英

避免在C ++中出现负值

[英]avoiding negative values in C++

我具有以下功能,并且我尝试通过包含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;
}

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

如果不想显示指数符号,请在显示/使用g之前考虑设置数字的精度。 设置精度的方法之一就是这里

您有一个正确的想法,但是语法有些偏离。 尝试这个:

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;
}

您是否在调用此函数时设置非双精度类型变量的值? 您收到任何警告吗? 那应该给你一个线索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM