发布网友 发布时间: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