Есть 3 переменных:
a — тип Int;
b — тип Int;
c — тип Long
Столкнулся с тем, что в выражении:
с = a * b;
правая часть, по умолчанию, сначала преобразуется
в Int, а потом в Long. Соответсвенно при больших
a и b и «переполнении» Int (скажем 300 000 и 10 000)
результат получается некорректный.
Приходится заморачиваться конструкцией:
c = Convert.ToInt64(a) * Convert.ToInt64(b);
По-другому никак не реализовать корректный расчёт?
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
Лонг — максимум в 9 223 372 036 854 775 807
Ориентируетесь на соответствующие значения в а и b.
Что смущает? усложнение читаемости кода? лишние преобразования или еще что?