2

这可能是一个愚蠢的问题,但我似乎遇到了双打没有按我预期的那样运作的情况,但我所看到的一切都表明它们是 64 位的,应该能够处理 10 位以上的数字。

long double test = 44398048390843;
printf("%Ld \n", test);
printf("%d \n", test);

但是每次打印都是这样的:

Output:
-209183936
-209183936

我假设我缺少一些愚蠢的东西,但是有人可以告诉我该怎么做吗?

4

2 回答 2

2

您指定了错误的格式字符串(两次)。供long double您使用%Lf

printf("%Lf \n", test);

请注意,这%Ld是未定义的,%d用于十进制格式的输出,并且需要一个int参数。

但是,在 C++ 中,您应该使用cout,并避免这种混淆:

std::cout << test << " \n";
于 2013-06-07T18:21:46.653 回答
1

您可以尝试使用printf("%Lf", test);

但是,您将问题标记为 C++。在这里,您可以将setprecision用于流。

于 2013-06-07T18:19:58.940 回答