C++ 双精度/打印无法处理C+中的14位数字+;
这可能是一个愚蠢的问题,但我似乎遇到了一种情况,即double不能像我预期的那样工作,但我所看到的一切都表明它们是64位的,应该能够处理超过10位的数据C++ 双精度/打印无法处理C+中的14位数字+;,c++,variables,size,double,C++,Variables,Size,Double,这可能是一个愚蠢的问题,但我似乎遇到了一种情况,即double不能像我预期的那样工作,但我所看到的一切都表明它们是64位的,应该能够处理超过10位的数据 long double test = 44398048390843; printf("%Ld \n", test); printf("%d \n", test); 但每次打印时都是这样: Output: -209183936 -209183936 我假设我遗漏了一些愚蠢的东西,但是有人能告诉我怎么做吗?你可以尝试使用printf(“%Lf”
long double test = 44398048390843;
printf("%Ld \n", test);
printf("%d \n", test);
但每次打印时都是这样:
Output:
-209183936
-209183936
我假设我遗漏了一些愚蠢的东西,但是有人能告诉我怎么做吗?你可以尝试使用
printf(“%Lf”,test)代码>
但是,你把问题标记为C++。此处可用于流。
您指定了错误的格式字符串(两次)。对于long double
,您使用%Lf
:
printf("%Lf \n", test);
请注意,%Ld
未定义,%d
用于十进制格式的输出,需要一个int
参数
<>但是,在C++中,你应该使用<代码> cOUT <代码>,避免这种混淆:
std::cout << test << " \n";
std::cout啊,好的,非常感谢。那很有效。只要这个问题被标记为C++,正确的东西就是使用流作为文本I/O,而不是那些容易出错的Prtff/SCANF例程。作为一个注释,我没有提到更奇异的浮点格式说明符:<代码> A <代码>,<代码> A <代码>,<代码> E <代码>,<代码> E <代码>,<代码> G <代码>,<代码> G < /代码>和F
。