C乘以和除

时间:2016-09-20 15:25:44

标签: c division multiplying

我正在为学校运行一个程序,并且遇到一个简单的数学问题,即C无法正确计算。我只是试图将我的输出除以一个数字,它返回原始数字。

int main(void)
{
    float fcost = 599;
    float shipt =  (fcost / 120);
    shipt = shipt * 120;

    printf("%4.0f", shipt);
    return 0;
}

3 个答案:

答案 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\""