用C ++编写数学表达式

时间:2014-10-04 18:58:31

标签: c++ math

下面写的数学表达式存在问题:

mathematical expression

cin >> value;

dividend = tan(fabs(2*value*value + 5 * value - 31.15)) 
    + log(fabs(value*value - 2.5)) / log(5.0);

divider = pow(fabs(pow(sin(value*value*value), 2)
    + fabs(0.33*(log(fabs(value*value - 2.5) / log(5.0))))), 1 / 5.0); 

result = dividend / divider;

结果是无效值。可能是什么问题?

1 个答案:

答案 0 :(得分:2)

虽然分母的括号是平衡的,或者divider如果你愿意,但它们没有正确放置。正如Yves Daoust所观察到的那样,你将log(5.0)放错了分区。

在不同的行上展开子表达式和括号,可以帮助您看到:

pow(
    fabs(
          pow(sin(value*value*value), 2)
           + fabs(
                  0.33 * ( 
                            log( fabs(value*value - 2.5) / log(5.0) )
                         )
                 )
        )
, 1 / 5.0); 

另外,为什么以0.33表示三分之一,除非你对精确度非常随意? 3分区可以移动......