下面写的数学表达式存在问题:
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;
结果是无效值。可能是什么问题?
答案 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分区可以移动......