Технически это зависит от языка, но почти все языки относятся к этому предмету одинаково. Когда существует несоответствие типов между двумя типами данных в выражении, большинство языков будет пытаться преобразовать данные с одной стороны, =
чтобы они соответствовали данным с другой стороны, в соответствии с набором предопределенных правил.
При делении двух чисел одного типа (целые числа, числа с двойной точностью и т. Д.) Результат всегда будет одного и того же типа (поэтому 'int / int' всегда будет иметь результатом int).
В этом случае у вас есть
double var = integer result
функция, которая преобразует целочисленный результат в двойной после вычисления, и в этом случае дробные данные уже потеряны. (большинство языков делают это преобразование, чтобы предотвратить неточности типов, не вызывая исключения или ошибки).
Если вы хотите сохранить результат как двойной, вам нужно создать ситуацию, когда у вас есть
double var = double result
Самый простой способ сделать это - заставить выражение в правой части уравнения преобразоваться в двойное:
c = a/(double)b
Разделение между целым числом и числом double приведет к преобразованию целого числа в число double (обратите внимание, что при выполнении математических операций компилятор часто выполняет преобразование с повышением частоты до наиболее определенного типа данных, чтобы предотвратить потерю данных).
После апкаста a
будет двойной, и теперь у вас есть деление на два дубля. Это создаст желаемое разделение и назначение.
СНОВА, пожалуйста , обратите внимание, что это зависит от языка (и может быть даже от компилятора), однако почти все языки (конечно, все те, которые я могу придумать в своей голове) относятся к этому примеру одинаково.