【发布时间】:2012-04-15 07:51:55
【问题描述】:
众所周知,使用printf 输出float 的值时,精度有限。
但是,有一个技巧可以提高输出的准确性,如下例所示:
#include <stdio.h>
int main()
{
float f = 1318926965; /* 10 random digits */
printf("%10.f\n", f); /* prints only 8 correct digits */
printf("%10d\n", *(int*)&f); /* prints all digits correctly */
return 0;
}
我的问题是,为什么人们不经常使用这个技巧?
【问题讨论】:
-
因为潜在的未定义行为是不好的。 (编辑:从技术上讲,它可能不是未定义的行为,因为我不确定标准对此有何规定。不过,Endianess 可能会咬你。)
-
4 月 1 日开个玩笑+1!
-
这显然让我很兴奋
-
你应该用工会来开一个无可指责的愚人节玩笑。
-
@MrLister 我不是说你的程序可读性太强,我是说它太不确定了。明天查一下“严格的别名规则”。
标签: c floating-point printf precision