减法的结果是正的

Subtraction is giving me positive result C++

本文关键字:结果是      更新时间:2023-10-16
if (GoalWeight < 0.0) {
    int weeks;
    cout << "How many weeks do you plan to continue this trend?n";
    cin >> weeks;
    double NewWeight = GoalWeight * weeks;
    double NegBMI = (weight - NewWeight) * 703 / (pow(HeightConverter, 2));
    cout << "If you complete your plan for " << weeks << "weeks you will have a new BMI of: n" << NegBMI;
}
system("pause");
return 0;
}

输出结果:

你现在的体重是多少?: 180

你目前的身高是多少英寸?"71

您当前的BMI是:25.10(不是输出的一部分,但这是正确的)

你的目标体重变化是多少?(磅)-1.5

你打算让这种趋势持续几个星期?: 6

如果你完成6周的计划,你的新BMI将为:26.36

你可以看出这是错误的

BMI的计算方法是(体重* 703)/身高^2(英寸)

对于负数,它所做的是:

180 + 9(代替180 - 9)得到(191 * 703)/71^2,得到26.36

而不是:

180 - 9(171 * 703)/71^2,得到正确输出:23.84

我知道你们都在摇头说我一定是个白痴,这是有道理的,我希望有人能帮我解决这个问题!

你的目标体重变化是多少?(磅)-1.5

你打算让这种趋势持续几个星期?: 6

6 * ( -1.5 ) == -9
180 - (-9) == 189

所以你要么输入目标权重变化为正数,要么加,而不是减。

由于您的语句6 * -1.5,您的newWeight结果为-9。如果您想减去它,只需使(weight + newWeight)而不是-

您认为如果您执行(+NewWeight), NewWeight的值会变为正值吗?

情况并非如此:

一元加运算符(+):对数字类型进行操作的结果是操作数本身的值。此操作符已预定义为所有数字类型。

作为一个解决方案,使用Reginalds的想法,使(weight + newWeight)而不是-