当前位置: 技术问答>java相关
8/(3-8/3)手工算等于24,JAVA程序中算却等于8,怎样使它等于24?
来源: 互联网 发布时间:2015-10-12
本文导语: 8/(3-8/3)手工算等于24,JAVA程序中算却等于8,怎样使它等于24?请各位大虾试过后告诉我一声,谢了! | 计算机是数值计算了, 即使是8/(3-8.0/3)也肯定是一个24的近似了 | ...
8/(3-8/3)手工算等于24,JAVA程序中算却等于8,怎样使它等于24?请各位大虾试过后告诉我一声,谢了!
|
计算机是数值计算了,
即使是8/(3-8.0/3)也肯定是一个24的近似了
即使是8/(3-8.0/3)也肯定是一个24的近似了
|
你把数据类型声明为:DOUBLE或者FLOAT 就可以了啊!
|
整数运算中/是整除,必须先强制转换为float:
(float)8/((float)3-(float)8/(float)3)
(float)8/((float)3-(float)8/(float)3)
|
8/(3-8/3)
你这里碰到了小数的运算,而java运算式中,直接数字运算比如
8/3是等于2的,即是默认为int类型:int(8/3)
所以你这样肯定不行
涉及到小数的运算,必须将数值定义为float或double类型的再运算才行
比如:
float a = 8f;
float b = 3f;
float c = a/(b-a/b);
System.out.println(c);
这样,得到的c值就是近似24的值24.000006。为什么会这样?那是因为java中float类型只有6~7位精度
你这里碰到了小数的运算,而java运算式中,直接数字运算比如
8/3是等于2的,即是默认为int类型:int(8/3)
所以你这样肯定不行
涉及到小数的运算,必须将数值定义为float或double类型的再运算才行
比如:
float a = 8f;
float b = 3f;
float c = a/(b-a/b);
System.out.println(c);
这样,得到的c值就是近似24的值24.000006。为什么会这样?那是因为java中float类型只有6~7位精度
|
计算机进行计算如果不是整数的话它的结果就是个近似植,如果你要得到24的结果可以有很多方法,不用我教你吧!!!
|
8.0/(3-8.0/3)
这样就可以了,因为java和C++里面 8/3 为整除,得 2
这样就可以了,因为java和C++里面 8/3 为整除,得 2
|
改为8/(3-(8/3))
|
你都不声明类型怎么会不出错呢?
|
呵呵,来晚了
|
缺省的是int型,所以8/3=2;
|
explicit type casting