我有一个格式为
的数据列表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
答案 0 :(得分:6)
典型的LeafletFooterView
(IEEE754 32位)仅精确到大约7位有效数字。你超过了。
解决方案?请改用UIViewController
。这将给你大约15个重要数字。但请注意,结果可能仍然不是 exact 。这就是浮点运算的本质。
一个不错的解决方案?使用float
代替包含时间值。 double
中有一个名为stuct
的人。
答案 1 :(得分:2)
你的问题在于32位float
类型缺乏精确性。使用类型double
代替时间变量。它具有您所需的精度。