Java十进制舍入以四舍五入为整数,浮点为" n"个小数点并使用不同的舍入模式
时间:2020-02-23 14:34:26 来源:igfitidea点击:
有时在使用double和float时,我们需要将它们四舍五入到特定的小数点以进行计算。
例如,商店使用上半舍入模式将最终价格舍入到小数点后两位。
在Java 5之前,DecimalFormat类用于四舍五入,但使用它与数字不一致,并且它没有提供很多选项。
因此,Java 5引入了" RoundingMode"枚举,并增强了" BigDecimal"类以使用RoundingMode来获取所需的几乎任何类型的舍入。
将BigDecimal与RoundingMode结合使用时,感觉就像您正在使用小数,并且非常易于使用。
这是显示其用法的示例程序。
package com.theitroad.misc; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; public class RoundingExample { public static void main(String[] args) { double l = 100.34567890; //similar like RegEx but don't have much options DecimalFormat df = new DecimalFormat("#.##"); System.out.println(df.format(l)); //2 decimal places rounding with half up rounding mode System.out.println(BigDecimal.valueOf(l).setScale(2, RoundingMode.HALF_UP)); //3 decimal places rounding with ceiling rounding mode System.out.println(BigDecimal.valueOf(l).setScale(3, RoundingMode.CEILING)); System.out.println(BigDecimal.valueOf(l).setScale(0, RoundingMode.CEILING)); //integer rounding with floor rounding mode System.out.println(BigDecimal.valueOf(l).setScale(0, RoundingMode.FLOOR)); } }