Почему результаты отличаются, если я включаю скобки - PullRequest
1 голос
/ 23 апреля 2019

Привет, мне просто интересно, почему

System.out.println((double) 1/4);

печатает 0,25

, а

System.out.println((double) (1/4));

печатает 0,0

Ответы [ 3 ]

9 голосов
/ 23 апреля 2019

Первый сначала преобразует 1 в double, затем выполняет деление с плавающей запятой.

Последний вначале выполняет (1/4) как целочисленное деление и только затем преобразует результат в double.

Правило в Java состоит в том, что если оба операнда являются целыми числами, операция является целочисленным делением;если любой из операндов является плавающим, это деление с плавающей точкой.

4 голосов
/ 23 апреля 2019

Выражение (double) 1/4 равно ((double) 1)/4.Таким образом, он преобразует целочисленное значение 1 в значение с плавающей запятой 1.0 и делит это значение с плавающей запятой на 4, в результате чего получается 0.25.

Выражение (double) (1/4) сначала выполняетделение, используя целые числа.В результате получается целочисленное значение 0, которое затем преобразуется в double.

0 голосов
/ 06 мая 2019

Убедитесь, что 1 или 4 двойные.Декларация:

переменный числитель = 1,0

...