56.46,15.52,76.06,82.33,83.17};int sum1;double sum2;/***begin***/int i;for(sum2=0,i=0,sum1=0;i<10;i++){sum1=sum1+(int)rea[i];sum2=sum2+rea[i]-(int)rea[i];//小数部分}/***end***/printf("sum1=%d,sum2=%.2f\n",sum1,sum2);return0;} 方法有很多,我们这里三分别...
你应当 改用 double 型。相应的输入输出格式 用 %lf。当然,如果 你的结果 都正确,说明数值范围恰好满足 既无小数,也没超界,那么你可以加上 (int) ...; 例如:sum= (int)( (double)a*0.0315);d= (int) ( (double)a*0.0363 );sum = sum + d;这样就没有警告信息了。
这个涉及到C语言中强制类型转换的知识。在C语言中,将一个double类型的数据强转成int类型时,将会丢弃该数据的小数部分,而只保留它的整数部分,因此(int)a = 5;对于b/b,因为b是double类型,所以它们的商也是一个double类型,为2.5/2.5 = 1.0(注意要在小数位上加一个0);最后计算5 + 1.0...
错误的意思就是double转成int可能会丢失数据精度。可以运行,如果你想避免这个错误的话,把k定义成double类型就可以了。
但是呢,你的计算结果是一个double类型的值,因此,当你将这个值复制给你的y变量时。高精度复制给低精度的数据,其就会提醒你可能会丢失数据。因此这也就是这个警告的对应的英文意思啦。虽然说不会导致错误,但是还是要严谨一些。你可以把这个变量定义为double类型的。希望可以帮助到你。
追答 c:(int)1.5把double类型转换为整型,浮点数缺省为double类型,表达式也一样,(int)(a*1.5)cpp:static_cast(a*1.5)把含浮点数类型的强制转换为整型!你的问题就解决了!数据过大就没有任何办法了,没法保证正确! 本回答被提问者采纳 1 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 1条折叠回答 其他...
VS2010报错warning C4244: “=”: 从“double”转换到“int”,可能丢失数据。求解决方法,代码怎么改? 推荐内容VS2010报错warning C4244: “=”: 从“double”转换到“int”,可能丢失数据。求解决方法,代码怎么改? void resizeAllWindow() { cvNamedWindow("src",0); cvNamedWindow( "扩张腐蚀",0); ...
double这个类型很多陷阱的;因为它那个小数末尾的无效数字是随机的;但double类型强制转换成int采取的是四舍五入,所以应该不会出错的啊;不麻烦楼主把题SHOW出来大家讨论一下。选B;(当然,我还没有看明白你的题目的前部分“若各变量以正确赋值”,呵呵,但希望我的解析对你有帮助)A. a=a+b=b++...
double是双精度浮点型,int是整型,只能int转double,而double转int肯定不行啊,非要转的话,要强制类型转换,但数据会丢失。