Java强制转换为啥没有四舍五入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java强制转换为啥没有四舍五入相关的知识,希望对你有一定的参考价值。
Double a = 3.98;
int ab = (int)a;
System.out.println(ab);
结果是3 不是4 为什么没有四舍五入
你要想让他 换行 就干脆 先让它四舍五入!
然后再让他强转
要两个步骤~ 参考技术B 你这是强转啊,当然不会四舍五入。
public static int round(float a)返回最接近参数的 int。通过加上 1/2 将该结果舍入为整数,取结果的基数并将其强制转换为 int 类型。换句话说,结果等于以下表达式的值:
(int)Math.floor(a + 0.5f)特殊情况是:
如果参数是 NaN,那么结果是 0。
如果结果是负无穷大或任何小于或等于 Integer.MIN_VALUE 的值,那么结果等于 Integer.MIN_VALUE 的值。
如果参数是正无穷大或任何大于或等于 Integer.MAX_VALUE 的值,那么结果等于 Integer.MAX_VALUE 的值。 参考技术C 强制转换是一个非常基本的操作,可能四舍五入太过复杂了吧。
如果你想要做到这一点,可以使用Math.round()或者BigDecimal,如下:
public int getRound(double dSource)...
int iRound
//BigDecimal的构造函数参数类型是double
BigDecimal deSource = new BigDecimal(dSource);
//deSource.setScale(0,BigDecimal.ROUND_HALF_UP) 返回值类型 BigDecimal
//intValue() 方法将BigDecimal转化为int
iRound= deSource.setScale(0,BigDecimal.ROUND_HALF_UP).intValue();
return iRound;
参考技术D 你不妨举个例子说明下,这样谁都明白你问的是什么问题
以上是关于Java强制转换为啥没有四舍五入的主要内容,如果未能解决你的问题,请参考以下文章
java中将一个double类型的数强制转换为long 型是四舍五入吗?