Зачем это читать ❔
В Java тип данных double играет очень важную роль в правильности и точности кода. Это то, что я чувствую и переживаю из своих практик до сих пор.
Это связано с тем, что мы чаще склонны совершать ошибки при приведении и преобразовании типов при работе с двойным типом данных. Кроме того, отладка кода, включающего элементы данных двойного типа, становится более сложной задачей, когда у нас нет доступа к тестовым примерам.
Даже небольшие ошибки в правильном приведении типов и преобразовании значений данных типа double при выполнении над ними операций приводят к некорректным выводам, несмотря на абсолютно правильную логику кода.
Поехали 🟢
Что такое двойной тип данных в Java?
Тип данных double представляет собой 64-битную IEEE 754 двойную точность с плавающей запятой. Диапазон его значений неограничен. Тип данных double обычно используется для десятичных значений, как и float. Тип данных double также никогда не следует использовать для точных значений, таких как валюта. Его значение по умолчанию равно 0.0d.
Пример: double d1 = 12,3;
Не забивая это пространство дополнительными теориями, мы рассмотрим пару реализаций и сценариев, связанных с двойным типом данных, с которым мы все обычно сталкиваемся при написании логики в наших кодах.
Сценарий 1.Деление двух значений целочисленного типа и сохранение результата в переменной типа double
class PlayWithDouble { public static void main(String[] args) { int sum = 9; int length = 4; double avg1 = sum/length; System.out.println(avg1); // 2.0 --> Incorrect output double avg2 = ((double)sum)/length; System.out.println(avg2); // 2.25 --> Correct output } }
Здесь при вычислении avg1 простое деление суммы на длину не сработало. Но при вычислении avg2 он дал правильный результат, потому что сумма была приведена к удвоению. Помните, что (double)(sum/length) также даст 2,0, что является неправильным ответом.
Сценарий 2.Выполнение операций над типом данных double и сохранение результата в переменной типа double
class PlayWithDouble { public static void main(String[] args) { double d = 12.374; double a1 = d*(3/100); System.out.println(a1); // 0.0 --> Incorrect Output double a2 = (d*3)/100; System.out.println(a2); // 0.37122 --> Correct Output } }
Здесь решающее значение имеет правильное размещение скобок.
Сценарий 3.Умножение двух значений типа double
class PlayWithDouble { public static void main(String[] args) { System.out.println(13.5*6.28); // 84.78 --> Correct Output } }
Сценарий 4.Умножение целочисленного значения на значение типа double и сохранение результата в переменной типа double.
class PlayWithDouble { public static void main(String[] args) { double d = 12.374; int a = 4; double ans = a*d; System.out.println(ans); // 49.496 --> Correct Output } }
Если мы умножаем целочисленное значение на двойное значение и сохраняем результат в переменной типа double, то приведение типов не требуется.
Сценарий 5. Умножение целочисленного значения на двойное значение и сохранение результата в переменной типа int.
class PlayWithDouble { public static void main(String[] args) { double d = 12.374; int a = 4; int c = (int)(a*d); System.out.println(c); // 49 --> The integer form of 49.496 } }
Здесь сначала произошло умножение (a*d), затем результат был приведен к целочисленному типу.
Сценарий 6. Немного измененная версия Сценария 5.
class PlayWithDouble { public static void main(String[] args) { double d = 12.374; int a = 4; int c = a*(int)d; System.out.println(c); // 48 --> The integer form of 48 } }
Здесь сначала d было приведено к целочисленной форме, а затем умножено на a. Итак, результат здесь оказался 48.
Вот некоторые очень распространенные сценарии приложений с двойным типом данных, с которыми каждый кодер или разработчик очень часто сталкивается при написании кода.
Я уверен, что есть и другие разные сценарии, с которыми вы можете столкнуться при написании кода, но вот некоторые из них, которые я мог бы упомянуть из своего опыта. Я буду более чем счастлив, если вы решите упомянуть еще несколько полезных указателей из ваших знаний в разделе комментариев.
Чтобы узнать больше о примитивных типах данных в Java, вы можете обратиться к:
Большое спасибо за то, что дочитали это до сих пор, потратив свое драгоценное время. Я действительно благодарен каждому из вас 🙏🧡. Пожалуйста, рассмотрите возможность оставить свои отзывы и предложения в разделе комментариев, чтобы я мог улучшить многие аспекты. Буду признателен, если вы разместите свой запрос в разделе комментариев и дадите мне возможность обратиться и помочь вам с ним.
Желаю, чтобы вы стали лучшей версией себя без всякой причины. 🌈✌😃