怎么输出long double型?

#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long double a;
a = 58413123456.0;
//a = fabs(a);
//a = a*1000 + 1;
printf("%lf",a);
//cout<<a;
system("pause");
}

我要让他输出58413123456而不是58413123456.000000怎么写?
请亲自试过再回答,很看不惯一些自以为是的猪

在C语言中,对于数值类型只有通过printf类函数输出这一种方式,比如printf, sprintf, fprintf等。这类函数输出时要求有格式符号,其中long double的格式符号为%llf
以下是一个简单的参考代码,输出到标准输出设备。
#include <stdio.h>
int main()
{
long double v = 1.23;
printf("%llf\n", v);//采用%llf格式输出long double 类型

return 0;
}

关于long double, 需要说明的是,在原始的C标准中是没有这个类型的,C99中才添加了该类型。而在C99及后续的规范中,对于该类型规定的也并不详细,只是要求long double类型在精度上需要不少于double的精度。于是就出现了有的编译器不支持long double, 而支持的编译器在实现上也有所区别,目前常见的long double有占用8字节,10字节,12字节和16字节四种,但输出格式都是相同的%llf。 如果想知道使用的编译器是如何实现的,可以用printf("%d", sizeof(long double));输出long double占用的空间值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-01
一楼的方法是可行的(经验证),只是需要加上头文件include <iomanip>
编码是 cout<<setprecision(6)<<fixed<<a;,意思是在fixed固定小数位数的情况下,设置小数位数为6.fixed和setprecision(6)顺序反过来也一样。

(我是进来凑热闹的~54我吧~)
第2个回答  推荐于2017-09-21
#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
long double a;
a = 58413123456.0;
cout<<setprecision(0)<<fixed<<a;
system("pause");
return 0;
}本回答被提问者采纳
第3个回答  2009-02-01
我也看不惯:

#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long double a;
a = 58413123456.0;
//a = fabs(a);
//a = a*1000 + 1;
printf("%0.lf",a); //加上精度0就OK了。
//cout<<a;
system("pause");
}
第4个回答  2009-02-01
那个回答者: CraftinA - 经理 五级 用的是iostream式的回答,是很正确的。而printf式的做法面对long double时则是不恰当的编程方式.