如果值为 1.01 到 1,如何四舍五入,如果 1.1 则 java 中的 2?
how to round off if the value is 1.01 to 1, if 1.1 then 2 in java?
在java
如何对具有以下模式的值(float、bigdecimal 或 double)进行舍入,
(1) 如果该值为 1.0,即如果小数点以零开头,则不应四舍五入,该值应为整数。即,在本例中为“1”。
(2) 如果值为 1.1,即小数点开始的数字大于 0,则整数应四舍五入到下一个数字。即,如果 1.1 那么它应该是 2.
因此,您想将低于 0.1 的值四舍五入为 0,将 0.1 或更大的值四舍五入为 1.0
long round = Math.round(x + 0.4);
开始尝试这个(对于 float 和 double)
int rounded = Math.round(x + 0.4);
参见 https://docs.oracle.com/javase/8/docs/api/java/math/RoundingMode.html。我相信 RoundingMode.CEILING
是你想要的。 BigDecimal
让您控制舍入:
new BigDecimal(1.0).setScale(0, RoundingMode.CEILING).doubleValue(); => 1.0
new BigDecimal(1.1).setScale(0, RoundingMode.CEILING).doubleValue(); => 2.0
Guava 包含一些实用程序 类 用于舍入浮点数并直接使用 RoundingMode
s 加倍。
DoubleMath.roundToInt(1.0, RoundingMode.CEILING); => 1
DoubleMath.roundToInt(1.1, RoundingMode.CEILING); => 2
编辑:糟糕。我错过了舍入 1.01
应该导致 1
的部分。其他建议的方法更正确。
我不太清楚你的说明。我理解你的问题是指 "ceil" 函数,即 1.01 必须向上舍入,但你的问题也可以解释为 1.01 必须向下舍入。 (如果后者是您想要的,请查看 Peter Lawrey 的回答。)
对于double
s(和float
s)Java为ceil函数提供标准方法Math.ceil(double a)
。
对于 BigDecimal
值,您可以使用 setScale
方法:将比例设置为 0(无小数)并将舍入模式设置为 RoundingMode.CEILING
以指定如何舍入:
static BigDecimal ceil(BigDecimal a) {
return a.setScale(0, RoundingMode.CEILING);
}
在java
如何对具有以下模式的值(float、bigdecimal 或 double)进行舍入,
(1) 如果该值为 1.0,即如果小数点以零开头,则不应四舍五入,该值应为整数。即,在本例中为“1”。
(2) 如果值为 1.1,即小数点开始的数字大于 0,则整数应四舍五入到下一个数字。即,如果 1.1 那么它应该是 2.
因此,您想将低于 0.1 的值四舍五入为 0,将 0.1 或更大的值四舍五入为 1.0
long round = Math.round(x + 0.4);
开始尝试这个(对于 float 和 double)
int rounded = Math.round(x + 0.4);
参见 https://docs.oracle.com/javase/8/docs/api/java/math/RoundingMode.html。我相信 RoundingMode.CEILING
是你想要的。 BigDecimal
让您控制舍入:
new BigDecimal(1.0).setScale(0, RoundingMode.CEILING).doubleValue(); => 1.0
new BigDecimal(1.1).setScale(0, RoundingMode.CEILING).doubleValue(); => 2.0
Guava 包含一些实用程序 类 用于舍入浮点数并直接使用 RoundingMode
s 加倍。
DoubleMath.roundToInt(1.0, RoundingMode.CEILING); => 1
DoubleMath.roundToInt(1.1, RoundingMode.CEILING); => 2
编辑:糟糕。我错过了舍入 1.01
应该导致 1
的部分。其他建议的方法更正确。
我不太清楚你的说明。我理解你的问题是指 "ceil" 函数,即 1.01 必须向上舍入,但你的问题也可以解释为 1.01 必须向下舍入。 (如果后者是您想要的,请查看 Peter Lawrey 的回答。)
对于double
s(和float
s)Java为ceil函数提供标准方法Math.ceil(double a)
。
对于 BigDecimal
值,您可以使用 setScale
方法:将比例设置为 0(无小数)并将舍入模式设置为 RoundingMode.CEILING
以指定如何舍入:
static BigDecimal ceil(BigDecimal a) {
return a.setScale(0, RoundingMode.CEILING);
}