int a=24,b=7; double c=a/b; printf("%.6lf",c); system("pause"); return 0; }
因为double类型除法可能会有误差
你一开始的(double)(a/b)实际上做的是整型a除以整型b得到一个整型结果然后强制转换到double,运算过程...
2.double 型表示的值范围要比 int 表示的值范围大,且从 double 值转换到 int 值,会进行四舍五入,从而有精度损失。
这个括号的位置不对,应该时先将a转换为double再与b运算,这样的结果就是你期望的值了,而像题目中的...
而两个int型数据相除,结果也是int型(取整),转换成double类型的时候小数部分已经变成0,而(double)a/b是把a转换成double型,再与b相除,结果是double型 举个例子:(double)(1/2),1/2的结果是0,(double)(1/2)是0.000000 (double)1/2,实际上是1.000000/2,结果是0.500000 ...
进行判断 if( (a/b) == (int)(a/b) )为真的话,当然就是可以被整除了
public class average_double { public static void main(String[] args) { float[] arr = new float[]{45.0f, 54.0f, 98.0f}; System.out.println("***"); System.out.println("出现的错误的方式"+test1(arr)); System.out.println("***"); System.out.println("完美解决的方法...
除法运算中 A:double (a/b) 即 double(1/3)即 double(0)即 0.0 B:double (a) / b ...
因为整数除法会将结果的小数部分抹去,之后再转成double已经无济于事,在除之前先转为double才能得到正确...