C++ 用C写数学表达式++
下面的数学表达式有问题:C++ 用C写数学表达式++,c++,math,C++,Math,下面的数学表达式有问题: 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))))),
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;
结果是无效的值。可能是什么问题?尽管分母有平衡圆括号,如果愿意,也有分隔符,但它们的位置不正确。正如Yves Daoust所观察到的,您将log5.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是可移植的…无效值是什么意思?它与PEMDAS有关。将其分解为更多语句,以便更轻松地查看发生的情况,在开始时设置断点,然后使用调试器逐步执行。你让它很难阅读,这就是为什么你不能发现问题的原因。第二行还有一个x。日志中的2*value*value+5*x-31.15log5.0。