c语言中conversion from 'double ' to 'int ', possible loss of...

发布网友 发布时间:2024-10-24 01:02

我来回答

2个回答

热心网友 时间:2024-11-07 08:59

你前面声明 了 sum 和 d 是 int 型。
sum=(double)a*0.0315; 尽管你 用了 (double) 强制转换,但结果会转回 int 型,赋给 sum; 这样,小数点一下数值全都略去了。带来误差。另外,如果 a 数值较大,a*0.0315 超出 int 型 允许的最大值,那么数会超界 变负数,也带来误差。
d 也有同样问题。
你应当 改用 double 型。相应的输入输出格式 用 %lf。
当然,如果 你的结果 都正确,说明数值范围恰好满足 既无小数,也没超界,那么你可以加上 (int) ...; 例如:
sum= (int)( (double)a*0.0315);
d= (int) ( (double)a*0.0363 );
sum = sum + d;
这样就没有警告信息了。

热心网友 时间:2024-11-07 08:51

你把a、sum、d都定义为double型,就可以了。输出格式用%.f

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com