好了许多可能的图案,让你有这样的代码:
BigDecimal numerator = new BigDecimal(numerator);
BigDecimal denominator = new BigDecimal(denominator);
double result = numerator.divide(denominator).doubleValue();
,你想要对输出的控制。由于结果是double
,这是一个原始的,你不会有太多的控制。
从我的理解,你不想做任何舍入到n
小数位,你想要原始精度与所需的格式配对。
你有几个选择。
BigDecimal numerator = new BigDecimal(numerator);
BigDecimal denominator = new BigDecimal(denominator);
BigDecimal div = numerator.divide(denominator);
如果你留在BigDecimal
,你的输出会更好。如果您将10
作为上述代码的分子和分母,则System.out.println(div)
将产生1
。
一般来说,要小心使用上面的代码,因为numerator
和denominator
一些组合将抛出
java.lang.ArithmeticException: "Non-terminating decimal expansion; no exact representable decimal result."
如果你想避免这种情况,而不用担心超出两倍的内部表示精度,双直接使用。
System.out.println(2312/2.543); //909.1624066063704
System.out.println(1.0/1.0); //1.0
System.out.println(1/1); //1
当使用双号,你可能会在你的情况下,0
末,如0.0060
。如果你想确保你在说什么,你就必须使用
String dec = String.valueOf(10.0/10.0); //1.0
,然后到你的结果转换为String
使用
String newDec = dec.endsWith("0") ? dec.substring(0, dec.length() - 1) : dec;
,以消除去年0
。当然,如果您的字符串以.0
结尾,您可以根据自己的喜好选择是否要离开那个领先的.
。