用c舍入

罗伯托·罗科(Roberto Rocco)

我正试图从从午夜开始的时间(以数组记录)开始的小时数和分钟数转换。但是我看到有一个舍入错误。例如,出发时间583(距午夜的分钟数),按如下方式计算时间和分钟数:

583/60 = 9.716666

我花了整整九个小时。然后,我将小数部分保留下来并执行以下操作:

0.716666 * 60 = 42.99996

分钟将是43分钟,但不幸的是,我无法推断该值的取整。

有想法吗

#include <stdio.h>

#define SIZE (int)sizeof(departures) / sizeof(departures[0])

int main(void) {
    int hours, minutes, mmin, fh, fm;
    float res;

    int departures[] = {480, 583, 679, 767, 840, 945, 1140, 1305};
    int Arrivals[]   = {616, 712, 91, 900, 968, 1075, 1280, 1438};

    for(int i = 0; i < SIZE; i++) {
        res = (float)departures[i] / 60;
        fh  = departures[i] / 60;
        fm  = ((float)departures[i] / 60 - fh) * 60;

        printf("%d) %d:%d (%f)\n", i, fh, fm, res);     
    }   

    return 0;
}
Yair B.

您可以使用舍入功能:

#include <stdio.h>
#include <math.h>
 int main()
{
       float i=5.4, j=5.6;
       printf("round of  %f is  %f\n", i, round(i));
       printf("round of  %f is  %f\n", j, round(j));
       return 0;
}

输出:

5.400000回合为5.000000

一轮5.600000是600万

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章