LCC printf浮点数输出

7

I have following program:

#include <stdio.h>

int main(int args, char *argv[]) {
    printf("%f\n", 0.99999);
    printf("%e\n", 0.99999);
}

结果如下:
0.009990
9.999900e-001

为什么第一个数字是错误的?我使用Windows XP,编译器是“Logiciels Informatique lcc-win32版本3.8,编译日期为2012年11月30日19:38:03”。


1
那些信息需要在你的问题中提供。请更新它以说明你正在使用lcc-win(以及哪个版本),并将源代码更新到实际包含#include <stdio.h>(并仍然存在问题)的版本。确保你复制并粘贴整个程序。 - Keith Thompson
这是Pentium FDIV的幽灵。类似于printf()的一个bug。 - chux - Reinstate Monica
你可能想直接联系lcc-win的维护者。 - Keith Thompson
1
@KeithThompson:一个声望值为1的用户如果能够展示出真正的编译器错误,应该得到某种奖励。 - Eric Postpischil
至少应该有一个徽章,用于“新用户首次提出关于FP的问题,并且不是重复问题”。 - Stephen Canon
显示剩余5条评论
1个回答

2
那个程序是正确的,它的输出应该是:
0.999990
9.999900e-01

或者类似于此的东西。

(你不使用argsargvmain的第一个参数通常命名为argc而不是args,但这些都不应该影响您的程序行为。)

看起来您在实现中发现了一个错误,很可能是在运行时库中而不是编译器本身中。我的简短谷歌搜索没有找到这个特定的错误引用(事实上,最热门的结果是这个问题)。

我建议联系lcc-win的维护者; 联系信息在网站上。简要说明并提供指向此问题的链接应该足以提供足够的信息,至少可以开始解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接