【发布时间】:2015-06-09 15:14:46
【问题描述】:
我正在尝试以微秒为单位计算 buffer 中的时间。
但是我不明白为什么我的代码的浮点运算结果不正确。
float time, sec;
int h, m;
sscanf(16:41:48.757996, "%d:%d:%f", &h, &m, &sec);
printf("buffer %s\n",buffer);
printf("hour %d\n",h);
printf("minute %d\n",m);
printf("seconde %f\n",sec);
time=3600*h+60*m;+sec;
printf("%f\n",time);
当我执行这段代码时,我得到以下结果:
buffer 16:41:48.757996
heure 16
minute 41
seconde 48.757996
60108.757812
但我期待:
buffer 16:41:48.757996
heure 16
minute 41
seconde 48.757996
60108.757996
浮点运算的结果不正确。
【问题讨论】:
-
浮点算术有很多陷阱,甚至连长时间的程序员也会感到惊讶。只需谷歌即可,
-
@olaf 谢谢你,但是怎么办呢?我没有想法!请帮帮我!
-
这里有一个提示:查看类型的名称:floating-point。除非您希望该点能够“浮动”,即由于操作而更改其任一侧的位数,否则您不需要使用这种类型。它不是,也不应与通用小数类型混淆(您始终可以使用缩放整数运算)。
标签: c floating-point printf addition