целочисленное деление Java возвращает двойной? Что здесь происходит? - PullRequest
0 голосов
/ 02 июля 2019

Смотрите скриншот:

enter image description here

Что там происходит?я вижу, что мы приводим 23F к int, поэтому при выборе «II» мы заканчиваем делать 23/7, что должно дать нам 3 ... по крайней мере, так я думал.Но почему у нас 3.0?Почему мы получаем двойной?

Ответы [ 2 ]

2 голосов
/ 02 июля 2019

Вот контекст:

float x = myFunc(23F);

int myFunc(float x) { ... }

Правая часть выражения - int, и вы правильно сделали вывод, что его значение равно 3.

Когда выприсваивая значение int переменной float, целое число будет преобразовано в float.

Это пример преобразования примитивного расширения .Это может произойти в различных контекстах, когда вы переходите от «меньшего» примитивного числового типа к «большему» примитивному числовому типу.Тип int «меньше», чем тип float.В общем:

byte <<code>short и char <<code>int <<code>long <<code>float <<code>double.


Почему мы получаем двойной?

Смотри выше.Но это float, а не double.

Когда вы выводите число в Java с использованием println, float и double будут выглядеть одинаково.Метод println не будет выводить float с суффиксом F.Суффиксы F и D используются только в исходном коде Java .

0 голосов
/ 02 июля 2019

Поскольку функция, которая возвращает результат, назначена на z, а тип z - это число с плавающей точкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...