Технічно це залежить від мови, але майже всі мови ставляться до цієї теми однаково. Коли в виразі є невідповідність типів між двома типами даних, більшість мов намагаються передати дані з однієї сторони знака, =
щоб відповідати даним на іншій стороні відповідно до набору попередньо визначених правил.
При поділі двох однотипних чисел (цілі числа, парні і т.д.) результат завжди буде одного типу (тому 'int / int' завжди призведе до int).
У цьому випадку ви отримаєте
double var = integer result
цілий результат, який переводить цілий результат у подвійне значення після обчислення; в цьому випадку дробові дані вже втрачені. (Більшість мов будуть робити це кастинг, щоб запобігти неточності типів, не викликаючи винятку чи помилки).
Якщо ви хочете зберегти результат як подвійний, ви хочете створити ситуацію, в якій є
double var = double result
Найпростіший спосіб зробити це - змусити вираз на правій частині рівняння кинути в подвійне:
c = a/(double)b
Поділ між цілим і подвійним результатом призведе до виведення цілого на подвійне (зауважте, що, виконуючи математику, компілятор часто "оновлюється" до найбільш конкретного типу даних, щоб запобігти втраті даних).
Після a
спливаючого моменту буде звиватися як подвійний, і тепер у вас є поділ між двома парними. Це створить бажаний поділ і призначення.
ПРОТИ, зауважте, що це специфічна мова (і навіть може бути компіляторною), проте майже всі мови (безумовно, всі, які я можу придумати вгорі голови) трактують цей приклад однаково.