在C中将时间转换为毫秒

Ala*_* Yu 2 c

我有一个格式为的数据列表

08:01:00.064

符号:小时,分钟,秒和毫秒

我需要将它们转换为:second.millisecond.

请在下面找到我的代码,

float calculateTime(char *line) {

    int hour;
    int minute;
    int second;
    int millisecond;
    //transfer from char to int
    hour = ((line[0] - '0')*10 + (line[1] - '0'))*3600;
    minute = ((line[3] - '0')*10 + (line[4] - '0'))*60;
    second = (line[6] - '0')*10 + (line[7] - '0');
    millisecond = (line[9] - '0') *100 + (line[10] - '0') *10 + (line[11] - '0');

    float time;

    time = hour + minute + second + millisecond *0.001;

    return (time);
Run Code Online (Sandbox Code Playgroud)

}

我的代码存在问题,毫秒将是不准确的.我认为这是由于计算时的浮动格式.

结果如下,

37831.945312 source毫秒= 944

我预期的输出是

37831.945312

Bat*_*eba 6

典型的float(IEEE754 32位)仅精确到大约7位有效数字.你超过了那个.

一个办法?请double改用.这将给你大约15个重要数字.但请注意,结果可能仍然不准确.这就是浮点运算的本质.

一个体面的解决方 使用stuct包含时间值的替代值.有一个叫tm<time.h>.