double类型的精度设置

caocheng8230 2010-12-22 12:49:56
比如double x=3.14;

经常用流输出时就会显示为3.14000000000001
导致EDIT框显示不下。

还有就是将"3.14"的字符串用strstream转换成double也会成3.1400000001

如何解决该问题?


还有就是一个3.1415的double型的数如何让它只保留小数点后两位也就是3.14而不是3.1415.
...全文
924 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
caocheng8230 2010-12-23
  • 打赏
  • 举报
回复
不建议在C++中使用sprintf这样的类C方法,更喜欢流的操作
rolax 2010-12-23
  • 打赏
  • 举报
回复

//c language
double x = 3.1415;
printf("%.2f\n",x);

//c++ language
double y = 3.1415;
char buf[8];
sprintf(buf,"%.2f\n",y);
cout << buf << endl;

//MFC
CEdit::SetLimitText(UINT nMax);
qiaohongjack 2010-12-22
  • 打赏
  • 举报
回复
用函数就可以了
無_1024 2010-12-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jikeyuan1 的回复:]
C/C++ code

double a=3.141519;
cout.precision (2);//设置小数点后面有多少位
cout<<fixed<<a<<endl;//输出就可以啦
[/Quote]
这种可以
printf("%0.2lf");
就想叫yoko 2010-12-22
  • 打赏
  • 举报
回复
1, 2楼正解
羽飞 2010-12-22
  • 打赏
  • 举报
回复
用CString的Format函数,和sprintf参数一样
一根烂笔头 2010-12-22
  • 打赏
  • 举报
回复
一根烂笔头 2010-12-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jikeyuan1 的回复:]
C/C++ code

double a=3.141519;
cout.precision (2);//设置小数点后面有多少位
cout<<fixed<<a<<endl;//输出就可以啦
[/Quote]
可行,printf也行
jikeyuan1 2010-12-22
  • 打赏
  • 举报
回复


double a=3.141519;
cout.precision (2);//设置小数点后面有多少位
cout<<fixed<<a<<endl;//输出就可以啦

hw_henry2008 2010-12-22
  • 打赏
  • 举报
回复
你可以把这个浮点数格式化输出到一个字符串中,然后再显示
如果想直接编程一个浮点数的值是3.14是不行的。
可以这样吧:

int main()
{
float kulv = 3.14 ;
printf("%.2f\n" , kulv) ;
return 0 ;
}

如果楼主用C++的话可以这样:


int main (){
float kulv = 3.14 ;
char buf[8] ;
sprintf(buf,"%.2f",kulv) ;
cout << buf << endl ;
return 0 ;
}

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧