Java数值计算精度问题

J2EE 码拜 6年前 (2015-04-12) 777次浏览 0个评论

我想要得到一个数的2/3,然后四舍五入,比如数值为3,那么2/3则等于2

直接3*(2/3)这样在java中计算得出的结果是0,哪位大哥知道的指导下,麻烦给个实例代码参考 谢谢!

Java数值计算精度问题
20分
直接使用2/3 都是int型的,计算的结果也是int型的,结果值就是0了
转为double型,计算可以得到小数位

double od = (double)(2)/3;
System.out.println(od);
System.out.println(od * 3);
Java数值计算精度问题
30分
同上,2和3都是整型的数,计算的结果也只能是整形的,所以结果是0
如果想要得到比较精确的数就要用浮点型。
加个单精度或双精度的后缀就行了:

system.out.println(3*(2f/3));
system.out.println(3*(2d/3));

上面的结果都是2.0
java有自动的类型转换,会将整型转换为浮点型
至于四舍五入就用

int a = 4;
system.out.println(Math.round(a*(2f/3)));

结果为3


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Java数值计算精度问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!