社区
C++ 语言
帖子详情
[求助] 关于double和int夹杂转换的问题~~~~
雨中的月儿
2006-03-28 05:28:00
如题,一个计算式中有好多int和double型的数据,进行四则运算,但结果并不如我所想,有的时候会出现很怪的问题。我知道,这是数据转换时数据丢失的问题,但不知如何避免,还请各位高手给我系统讲一下。
谢谢了,先~~~
...全文
571
9
打赏
收藏
[求助] 关于double和int夹杂转换的问题~~~~
如题,一个计算式中有好多int和double型的数据,进行四则运算,但结果并不如我所想,有的时候会出现很怪的问题。我知道,这是数据转换时数据丢失的问题,但不知如何避免,还请各位高手给我系统讲一下。 谢谢了,先~~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
取整数的几种方法
取整数的几种方法
python
double
转
int
_
int
、float、
double
数据类型之间
转换
的原则
C语言提供了两种不同的浮点数据:float 和
double
,即单精度和双精度浮点。当在
int
(假设
int
是32位的)、float和
double
格式之间进行强制类型
转换
时,原则如下:从
int
转换
成 float,数字不会溢出,但是可能被舍入。从
int
、float
转换
成
double
,能够保留精确的数值。因为
double
有更大的范围和更高的精度(有效位数)。从
double
转换
成 flo...
c语言
int
加
double
等于,关于C语言中
double
和
int
之间
转换
的奇怪结果
我的
问题
:尝试找出以下C代码段的结果:#include
int
main(
int
argc, char* argv[]){
double
a = 5.1;
int
b = a * 100;std::cout << b << std::endl;
double
c = 6.1;
int
d = c * 100;std::cout << d << std::en...
double
和
int
转换
时的精度
问题
double
t = 3.9;
int
x = (
int
)(t + 0.5);// 当 t > 0.5时 可以避免
转换
成3 cout << x; // 输出为: 4
java中关于String类型和
double
,
int
类型之间的
转换
今天get的小技巧,希望以后来这里完善。 //
double
转换
为String
double
dA = 0.325; String sA = new
Double
(dA).toString(); //String
转换
为
int
或
double
String sB = "0.325";
double
dB =
C++ 语言
65,206
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章