| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2048 人关注过本帖
标题:请问C++中如何去小数点后两位呀?
只看楼主 加入收藏
killcode
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-3-20
收藏
 问题点数:0 回复次数:11 
请问C++中如何去小数点后两位呀?
例如我已经有一个double值3.14532,如果我想得到它的四舍五入值3.15(也要是double型的),程序该如何写呢?或者不用四舍五入,直接去到3.14,程序有该怎么写呀?有现成的方法可以调用吗?谢谢
搜索更多相关主题的帖子: 小数点 四舍五入 double 
2006-04-24 01:23
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
#include<iostream>
using namespace std;
int main()
{
double x,y;int z,ans;
cout<<"Enter a double number: ";
cin>>x;
y=x*1000;
ans=int(y);
z=ans%10;
if(z<5)ans-=z;
else ans=ans-z+10;
cout<<fixed<<double(ans)/1000<<endl;
systerm("pause");
return 0;
}
没编译,没调试,没检查错误,你自己去编,试试。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-04-24 17:08
rayc
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-4-24
收藏
得分:0 
这个我也不懂哦!我是初学.只能看懂前面一点点,后面也不知道哦,wfpb讲解一下哈...呵呵

2006-04-24 17:13
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
比如输入的数是:3.14159。
则x=3.14159;
然后y=3.14159*1000就等于:3141.59.//这里是求2位有效数的4舍5入,所以乘1000。
然后用强制类型转换,ans=int(y);就有ans=3141;
然后看z=ans%10;就是求ans中最后一位数的值,这里是1;
然后根据这个值来四舍五入。如果大于5就进1,小于5就省略。
然后在把得到的新的ans强制类型转换再除以1000,double(ans)/1000;
得到最后的答案。
//注意,我也是菜鸟。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-04-24 18:40
无限忧伤
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-4-5
收藏
得分:0 
使用#include"iostream.h"里面有个setprecision格式控制符,可以控制有效数字位数.
我好不容易翻书找到的呦!

2006-04-24 22:23
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 

到了STL就变为了precision了。
#include <iostream>
using namespace std;
void main()
{
float i=3.14159;
cout.precision(3);
cout<<i<<endl;
}
结果就为3.14.
//我也是很菜的。


=×&D o I p R e E n C g T l X&×=
2006-04-24 22:34
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
以下是引用踏魔狼在2006-4-24 22:34:00的发言:

到了STL就变为了precision了。
#include <iostream>
using namespace std;
void main()
{
float i=3.14159;
cout.precision(3);
cout<<i<<endl;
}
结果就为3.14.
//我也是很菜的。

你也太过分了
是不是讽刺我们呢


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-04-25 13:09
hmilyalex
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-4-21
收藏
得分:0 
请问六楼的,precision 是做什么的?
谢谢,我很菜

教室--食堂--床
2006-04-25 20:28
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 

其实C的格式会比C++的cout简单,MFC的Format也同样方便,不知道STL里面为什么搞个percision,这么不方便。
#include "stdafx.h"

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
float fPi = (float)3.14532;

printf("%.2f\n", fPi);


cout.precision(3);
cout << fPi << endl;
return 0;
}


http://myajax95./
2006-04-25 23:32
ElfDN
Rank: 4
等 级:贵宾
威 望:11
帖 子:291
专家分:0
注 册:2005-11-13
收藏
得分:0 
#include<iomanip>//重要的头文件
#include<iostream>
#include<cmath>
using namespace std;
int main(){
cout<<fixed<<setprecision(2)<<M_PI<<endl;
}

2006-04-26 21:05
快速回复:请问C++中如何去小数点后两位呀?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034492 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved