Вопрос по java – Как я могу правильно разделить с помощью BigDecimal

39

Мой пример кода:

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

Что я делаю неправильно?

Извините за Lorem ipsum, но он не позволил бы мне публиковать сообщения без него, поскольку "вопрос был слишком коротким". Jan Ajan
Так что если мне нужно 0.33333333? Как мне разделить 1 на 3? Jan Ajan
Ян, вы указываете шкалу как 8 для вашего случая. a.divide (b, 8, BigDecimal.ROUND_HALF_UP); Rohan Grover
Ваш результат верен. Одна треть, округленная до ближайшего целого числа, разрывая связи путем округления в большую сторону, на самом деле является плоским круглым нулем. Marko Topolnik

Ваш Ответ

2   ответа
2

BigDecimalс помощью поплавков, как"1.0"; хотя бы числитель, если вы хотите десятичный результат.

Error: User Rate Limit ExceededBigDecimal c = a.setScale(5).divide(b, BigDecimal.ROUND_HALF_UP);Error: User Rate Limit Exceeded Jan Ajan
Error: User Rate Limit Exceeded
70

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededdivite(Sigdecimal, int, int)... Jan Ajan

Похожие вопросы