繁体   English   中英

如何使用 BigDecimal 正确划分

[英]How can I divide properly using 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.println(a+"/"+b+" = "+c);
  }
}

结果是: 1/3 = 0

我究竟做错了什么?

您尚未指定结果的比例。 请试试这个

2019 年编辑:更新了 JDK 13 的答案。因为希望你现在已经从 JDK 1.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 13文档。

JDK 1.5 的旧答案

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);
      }
    }

这将使结果为 0.33。 请阅读API

import java.math.*;
class Main{
   public static void main(String[] args) {

      // create 3 BigDecimal objects
      BigDecimal bg1, bg2, bg3;
      MathContext mc=new MathContext(10,RoundingMode.DOWN);

      bg1 = new BigDecimal("2.4",mc);
      bg2 = new BigDecimal("32301",mc);

      bg3 = bg1.divide(bg2,mc); // divide bg1 with bg2

      String str = "Division result is " +bg3;

      // print bg3 value
      System.out.println( str );
   }
}

giving wrong answer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM