C++ 打印长双变量的所有十进制数字

C++ 打印长双变量的所有十进制数字,c++,gcc,double,C++,Gcc,Double,我发现我机器上的double类型对应于维基百科文章,longdouble对应于以下文本: 这就是为什么floor(52/log2(10))或double的15位应该是正确的,而floor(63/log2(10))或长double的19位应该是可信的 守则: intmain() { 双d=0.1; 长双ld=0.1; 标准:计算精度(19); 标准::cout.setf(标准::ios_base::scientific); std::cout0.1literal常量不是一个长双精度,它可能是一个双

我发现我机器上的
double
类型对应于维基百科文章,
longdouble
对应于以下文本:

这就是为什么
floor(52/log2(10))
double
的15位应该是正确的,而
floor(63/log2(10))
长double的19位应该是可信的

守则:

intmain()
{
双d=0.1;
长双ld=0.1;
标准:计算精度(19);
标准::cout.setf(标准::ios_base::scientific);

std::cout0.1
literal常量不是一个长双精度,它可能是一个双精度

您可能需要使用初始化
ld

 long double ld = (long double) 1.0 / (long double) 10.0;
<> >这个分区包含两个长的双操作数,所以希望在长的双操作中完成(我不确定,你必须仔细检查适当的C++标准)。
您可能希望使用支持最新标准的GCC进行编译。对于GCC4.7,我建议使用
g++-Wall-std=c++11
进行编译,但对于您的4.6,您可能需要说
-std=c++0x

这是一个双精度。浮点数末尾有
f
,长双精度
L
(当然,大小写不重要)。谢谢!
(长双精度)1.0/(长双精度)10.0
在没有任何
-std
选项的情况下工作。
长双精度ld=0.1L;
也可以工作。
1.0000000000000001e-01
1.0000000000000001e-01
 long double ld = (long double) 1.0 / (long double) 10.0;