在C中将时间转换为毫秒

时间:2015-11-20 12:10:41

标签: 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);

}

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

下面的结果,

  

37831.945312 source millisecond = 944

我预期的输出是

  

37831.945312

2 个答案:

答案 0 :(得分:6)

典型的LeafletFooterView(IEEE754 32位)仅精确到大约7位有效数字。你超过了。

解决方案?请改用UIViewController。这将给你大约15个重要数字。但请注意,结果可能仍然不是 exact 。这就是浮点运算的本质。

一个不错的解决方案?使用float代替包含时间值。 double中有一个名为stuct的人。

答案 1 :(得分:2)

你的问题在于32位float类型缺乏精确性。使用类型double代替时间变量。它具有您所需的精度。