Java 如何使用BigDecimal正确除法

Java 如何使用BigDecimal正确除法,java,bigdecimal,Java,Bigdecimal,我的代码示例: import java.math.*; public class x { public static void main(String[] args) { BigDecimal a = new BigDecimal("1"); BigDecimal b = new BigDecimal("3"); BigDecimal c = a.divide(b, BigDecimal.ROUND_HALF_UP); System.out.print

我的代码示例:

import java.math.*; 

public class x
{
  public static void main(String[] args)
  {
    BigDecimal a = new BigDecimal("1");
    BigDecimal b = new BigDecimal("3");
    BigDecimal c = a.divide(b, BigDecimal.ROUND_HALF_UP);
    System.out.println(a+"/"+b+" = "+c);
  }
}
结果是:
1/3=0


我做错了什么?

您没有为结果指定刻度。请试试这个

2019年编辑:JDK 13的更新答案。因为希望您现在已经从JDK1.5迁移出去了

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {

    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("1");
        BigDecimal b = new BigDecimal("3");
        BigDecimal c = a.divide(b, 2, RoundingMode.HALF_UP);
        System.out.println(a + "/" + b + " = " + c);
    }

}
请阅读文档

JDK 1.5的旧答案:


这将使结果为0.33。请阅读

关于Lorem ipsum的抱歉,但如果没有它,我将无法发布“问题太短”。您的结果是正确的。三分之一,四舍五入到最接近的整数,通过四舍五入打破联系,实际上是一个平坦的,四舍五入的零。那么,如果我需要0.33333?我怎么才能把1除以3?简,你把你的情况定为8。a、 除法(b,8,BigDecimal.四舍五入);Jan我帖子中的链接是针对1.5API的。除法(BigDecimal除数,int scale,int roundingMode)已经存在了一段时间了,我相信。
divide(BigDecimal除数,int roundingMode)
是@deposed(因为=“9”)
import java.math.*; 

    public class x
    {
      public static void main(String[] args)
      {
        BigDecimal a = new BigDecimal("1");
        BigDecimal b = new BigDecimal("3");
        BigDecimal c = a.divide(b,2, BigDecimal.ROUND_HALF_UP);
        System.out.println(a+"/"+b+" = "+c);
      }
    }