C++中如何把double类型转化为int类型?

tao8812100010 2011-01-24 09:56:56
m_Control.GetCurrentPosition的返回值是double类型 我想把这个转为int 最好使用round函数 四舍五入 应该怎么做?需要导入什么头文件
m_Control.SetCurrentPosition(m_Control.GetCurrentPosition-10);
...全文
10550 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
孙歌 2011-01-25
  • 打赏
  • 举报
回复
直接强制转换...
Jarrys 2011-01-25
  • 打赏
  • 举报
回复

double floor( double x );
功能:返回不大于x的最大整数

double ceil( double x );
功能:返回大于x的最小整数
henrycen 2011-01-25
  • 打赏
  • 举报
回复

int DoubleToInt(double dValue)
{
if(dValue < 0.0)
return static_cast<int>(dValue - 0.5);
else
return static_cast<int>(dValue + 0.5);

return 0;
}



pstrunner 2011-01-25
  • 打赏
  • 举报
回复
++
[Quote=引用 13 楼 henrycen 的回复:]
C/C++ code

int DoubleToInt(double dValue)
{
if(dValue < 0.0)
return static_cast<int>(dValue - 0.5);
else
return static_cast<int>(dValue + 0.5);

return 0.0;
}
[/Quote]
henrycen 2011-01-25
  • 打赏
  • 举报
回复

int DoubleToInt(double dValue)
{
if(dValue < 0.0)
return static_cast<int>(dValue - 0.5);
else
return static_cast<int>(dValue + 0.5);

return 0.0;
}

jikeyuan1 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bai_hua_lin 的回复:]

for example:
double i = 5;
int j = static_cast<int>(i + 0.5);
j就是你转换后的值。
[/Quote]
myMugua 2011-01-25
  • 打赏
  • 举报
回复
double a = 1110.01;
int b = 0;
b = a;
cout<<a<<endl;
a的值就是1110 编译器自动强制转换了a的值!
mtj520 2011-01-25
  • 打赏
  • 举报
回复
直接强制转换就可以了啊..
赵4老师 2011-01-24
  • 打赏
  • 举报
回复
仅供参考
//Round(1.234,2) = 1.23
//Round(1.234,0) = 1.0
//Round(123.4,-1) = 120.0
double Round(double dVal, short iPlaces) {
double dRetval;
double dMod = 0.0000001;
if (dVal<0.0) dMod=-0.0000001;
dRetval=dVal;
dRetval+=(5.0/pow(10.0,iPlaces+1.0));
dRetval*=pow(10.0,iPlaces);
dRetval=floor(dRetval+dMod);
dRetval/=pow(10.0,iPlaces);
return(dRetval);
}

double round(double dVal, short iPlaces) //iPlaces>=0
{
unsigned char s[20];
double dRetval;

sprintf(s,"%.*lf",iPlaces,dVal);
sscanf(s,"%lf",&dRetval);
return (dRetval);
}
ewrscsf 2011-01-24
  • 打赏
  • 举报
回复
double型转换成整形的话实际上取整数部分,小数部分舍弃了。
fendouzhe 2011-01-24
  • 打赏
  • 举报
回复
传说中的round函数没有找到,不过楼上几位介绍的+0.5的方法一直在用,呵呵。
bai_hua_lin 2011-01-24
  • 打赏
  • 举报
回复
for example:
double i = 5;
int j = static_cast<int>(i + 0.5);
j就是你转换后的值。
MYMGrub 2011-01-24
  • 打赏
  • 举报
回复
int里面如果放不下的话怎么处理啊??
sxqinge 2011-01-24
  • 打赏
  • 举报
回复
上面的改下:
double a;
int b;
b = ((int)(a*10))/10;
sxqinge 2011-01-24
  • 打赏
  • 举报
回复 1
double a;
int b;
b = ((int)a*10)/10;
bdmh 2011-01-24
  • 打赏
  • 举报
回复 1
很简单的实现

void main( void )
{
double d=5.6;
int i = (int)(d+0.5);
printf("%d",i);
}
zhaolinger2 2011-01-24
  • 打赏
  • 举报
回复
#include <math>

65,187

社区成员

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

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