Я закодировал некоторые вещи калькуляции (я скопировал ниже действительно упрощенного примера того, что я сделал), как CASE2, и получил плохие результаты. Реализовал код как CASE1 и работал отлично. Я знаю, что в CASE 2 есть неявный листинг, но не уверен в полной причине. Кто-нибудь может объяснить мне, что именно происходит внизу?
//CASE 1, result 5.5
double auxMedia = (5 + 6);
auxMedia = auxMedia / 2;
//CASE 2, result 5.0
double auxMedia1 = (5 + 6) / 2;
//CASE 3, result 5.5
double auxMedia3 = (5.0 + 6.0) / 2.0;
//CASE 4, result 5.5
double auxMedia4 = (5 + 6) / 2.0;
Мое предположение заключается в том, что /2 в CASE2 отличает (5 + 6) до int и вызывает округление до 5, затем снова бросается в double и преобразуется в 5.0.
CASE3 и CASE 4 также устраняют проблему.