在Java中舍入双重值
目前我正在使用DecimalFormat类来舍入双值
double d = 42.405; DecimalFormat f = new DecimalFormat("##.00"); System.out.println(f.format(d)); output: 42.41;
我正在使用Selenium进行浏览器应用程序测试,所以基于浏览器我需要舍入值。
例如:
IE收于42.405,收于42.40,其他人收于42.41。 但如果值类似于42.403,42.406,那么我会看到所有浏览器的一致性。 所以现在我必须在我的脚本中添加一个条件,所以如果浏览器是IE,那么舍入应该以这样的方式发生,我应该得到42.40,而对于其他浏览器应该得到42.41。 我怎样才能做到这一点?
您可以为DecimalFormatter
指定RoundingMode
,但请根据您的需要选择它(我刚刚使用HALF_UP
给出了一个示例)。
double d = 42.405; DecimalFormat f = new DecimalFormat("##.00"); f.setRoundingMode(RoundingMode.HALF_UP); System.out.println(f.format(d)); // Prints 42.41
或者,您也可以使用BigDecimal
(如果你知道为什么我们通常选择BigDecimal
而不是double
)。
double d = 42.405; BigDecimal bd = new BigDecimal(d); bd = bd.setScale(2, RoundingMode.HALF_UP); System.out.println(bd.doubleValue()); // Prints 42.41
DecimalFormat f=new DecimalFormat("0.00"); String formate = f.format(value); double finalValue = (Double)f.parse(formate) ; System.out.println(finalValue);
使用setRoundingMode作为:
f.setRoundingMode( RoundingMode.DOWN );
如何在Java中将数字舍入到n个小数位
试试这可能会有所帮助:
double d = 42.405; System.out.println(String.format("%2.2f", d));
你也可以“随手”做到如下
double d = 42.405; final double roundedValue = (Math.round(d * 100) / (double) 100);
在42.405
情况下,你获得42.41
,如果是42.404
– 42.4
,那么之后
System.out.println(String.format("%2.2f", roundedValue));
你会得到必要的输出。 相应地为42.41
或42.40
。