7

我有以下程序:

#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 version 3.8. Compilation date: Nov 30 2012 19:38:03”。

4

1 回答 1

2

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

0.999990
9.999900e-01

或与此非常相似的东西。

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

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

建议联系lcc-win的维护者;联系信息在网站上。一个简短的描述和这个问题的链接应该提供足够的信息,至少开始。

于 2013-08-23T19:59:59.453 回答