Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 双精度/打印无法处理C+中的14位数字+;_C++_Variables_Size_Double - Fatal编程技术网

C++ 双精度/打印无法处理C+中的14位数字+;

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”

这可能是一个愚蠢的问题,但我似乎遇到了一种情况,即double不能像我预期的那样工作,但我所看到的一切都表明它们是64位的,应该能够处理超过10位的数据

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