我正在为学校运行一个程序,并且遇到一个简单的数学问题,即C无法正确计算。我只是试图将我的输出除以一个数字,它返回原始数字。
int main(void)
{
float fcost = 599;
float shipt = (fcost / 120);
shipt = shipt * 120;
printf("%4.0f", shipt);
return 0;
}
答案 0 :(得分:0)
如果你想简单地将数字除以120,请删除下一行,即删除
shipt * = 120
因为它使前一行的流程无效。
如果这不是您的意思,请澄清。
答案 1 :(得分:0)
根据评论中的说明,您希望将分部的结果向下舍入。
为了做到这一点,你应该使用int
代替float
,以便执行整数除法(截断小数部分)而不是浮点除法(保留小数部分):
int fcost = 599;
int shipt = (fcost / 120);
shipt *=120;
printf("%d", shipt);
答案 2 :(得分:0)
OP似乎want是一个截断的数字商。
如果原始double
远远超出int
的范围,则将FP编号转换为#include <math.h>
int main(void) {
float fcost = 599;
// to round to the next lower whole number
float shipt = floorf(fcost / 120);
// to round to the next higher whole number
float shipt = ceilf(fcost / 120);
// to round to the next whole number toward 0
float shipt = truncf(fcost / 120);
shipt *= 120;
printf("%4.0f", shipt);
return 0;
}
会冒未定义的行为(UB)。
标准库提供各种舍入功能以避免上述问题。
q="\"pg&e\""