我有以下程序:

#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”。

最佳答案

该程序是正确的,其输出应为:

0.999990
9.999900e-01

或类似的东西。

(您不使用argsargv,并且main的第一个参数的常用名称是argc而不是args,但这两个问题都不应该影响程序的行为。)

看来您在实现中发现了一个错误,可能是在运行时库中而不是在编译器本身中发现的。我在Google进行的简短搜索并没有找到对此特定bug的引用(实际上,命中率最高的是这个问题)。

我建议联系lcc-win的维护者。联系信息在web site上。简短的描述和对此问题的链接应该至少可以提供足够的信息。

关于c - lcc printf浮点数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18409635/

10-11 18:11