这可能是一个愚蠢的问题,但我似乎遇到了双打没有按我预期的那样运作的情况,但我所看到的一切都表明它们是 64 位的,应该能够处理 10 位以上的数字。
long double test = 44398048390843;
printf("%Ld \n", test);
printf("%d \n", test);
但是每次打印都是这样的:
Output:
-209183936
-209183936
我假设我缺少一些愚蠢的东西,但是有人可以告诉我该怎么做吗?
您指定了错误的格式字符串(两次)。供long double
您使用%Lf
:
printf("%Lf \n", test);
请注意,这%Ld
是未定义的,%d
用于十进制格式的输出,并且需要一个int
参数。
但是,在 C++ 中,您应该使用cout
,并避免这种混淆:
std::cout << test << " \n";
您可以尝试使用printf("%Lf", test);
但是,您将问题标记为 C++。在这里,您可以将setprecision用于流。