[求助] 关于double和int夹杂转换的问题~~~~

雨中的月儿 2006-03-28 05:28:00
如题,一个计算式中有好多int和double型的数据,进行四则运算,但结果并不如我所想,有的时候会出现很怪的问题。我知道,这是数据转换时数据丢失的问题,但不知如何避免,还请各位高手给我系统讲一下。

谢谢了,先~~~
...全文
537 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zh2817 2006-03-29
  • 打赏
  • 举报
回复
一个计算式中有好多int和double型的数据,进行四则运算,但结果并不如我所想,将你的类型强制转换为你想要的类型试一下!
iamwiner 2006-03-29
  • 打赏
  • 举报
回复
int iDes = d1*d2+d3*d4; //这样会出错。----应该也不会出错吧?
iDes = (int)(d1*d2+d3*d4); //这样就不会出错。

最好要显示转换.
雨中的月儿 2006-03-29
  • 打赏
  • 举报
回复
不过,我以前听说过int -> double不会有数据丢失,double -> int时,会有数据丢失,而且如果显式转换,效果不会出错,如果隐式转换就会出现不明数据,是这样么?

比如有一些double数据四则运算后,要求赋值给一个int型的值,就会出错。但如果显式转换就不会。
double d1,d2,....;
int iDes = d1*d2+d3*d4; //这样会出错。
iDes = (int)(d1*d2+d3*d4); //这样就不会出错。

大家碰到类似情况吗?
这确实是个很让人郁闷的事情。
gooderfeng 2006-03-28
  • 打赏
  • 举报
回复
把int都做成double就好了,如果不能就得强制转换一下,不过你说大量的,怎么弄也是麻烦
netting_fish 2006-03-28
  • 打赏
  • 举报
回复
都转化成高级别的类型就不会出错了(其实double也会出错,因为double不能百分百的存数)
把int 都转为double
fatalerror99 2006-03-28
  • 打赏
  • 举报
回复
int 除 int,结果还是 int,小数位会被切掉,所以要避免这样的运算。先转换成 double 再除。
雨中的月儿 2006-03-28
  • 打赏
  • 举报
回复
晕,二楼的兄弟,这个跟“类”有什么关系呢?还要加explicit?

汗~~~~
healer_kx 2006-03-28
  • 打赏
  • 举报
回复
运算中尽量把所有的int都转化为double了,这样就没有错误了.
dragonzxh 2006-03-28
  • 打赏
  • 举报
回复
在类前面explicit

64,646

社区成员

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

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