Когда я разделяю 317 на 219 в Java, используя парные пары, я получаю 1.
Например:
double b = 317/219;
System.out.println(b);
Выход: 1.
Это потому, что это повторяющееся десятичное число? Им пришлось использовать BigDecimal, а это раздражает.
Когда я разделяю 317 на 219 в Java, используя парные пары, я получаю 1.
Например:
double b = 317/219;
System.out.println(b);
Выход: 1.
Это потому, что это повторяющееся десятичное число? Им пришлось использовать BigDecimal, а это раздражает.
Попробуйте это
double b = 317/219D;
Тип кодированных чисел по умолчанию в java - это int, поэтому с кодом, который у вас есть, java работает с двумя номерами int, и тогда результат разделения будет также int, который будет обрезать десятичную часть, чтобы дать окончательный результат 1. Этот результат int затем отбрасывается из int 1 в double 1 без предупреждения компилятора, потому что он расширяется (тот, где тип источника гарантированно "подходит" к целевому типу).
Кодируя любое из чисел как double с конечным D (вы также можете использовать D, но я всегда использую буквы верхнего регистра, потому что L, поскольку строчный L выглядит как 1), результат деления будет double тоже.
Другая альтернатива...
double b = (double)317/219;
Это потому, что вы использовали целочисленные литералы, поэтому вы выполняете целочисленное деление.
Попробуйте написать double b = 317.0/219.0; вместо этого.
Стоит отметить, что в вашем примере во время выполнения нет разделения. 317/219 вычисляется во время компиляции (целочисленное деление, фракция отбрасывается) и заменяется на константу. Если вы декомпилируете .class(я использовал Jad http://www.kpdus.com/jad.html), вы увидите
double b = 1.0D;
Это разделение int. Запись:
double b = 317.0/219;
System.out.println(b);
так как числа, которые вы положили, являются inetgers, так что это ответ.
для получения двойного значения вам нужно либо использовать число с плавающей запятой, либо использовать одно из целых чисел:
double b = 317.0/219;
System.out.println(b);
или
double b = ((double)317)/219;
System.out.println(b);
Вы можете попробовать
double b = 0.0;
b = 317/219;
так что я могу вернуть десятичную точку