Есть 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);
По-другому никак не реализовать корректный расчёт?
ну а тогда чем не нравится преобразование множителей в более «старшие» типы?
Что смущает? усложнение читаемости кода? лишние преобразования или еще что?
На фоне ограниченного выбора длинных выпусков на российском рынке новые облигации «Атомэнергопрома» закономерно становятся одними из самых заметных инструментов для долгосрочных стратегий. С...
Финансовый сектор — один из лидеров цифровизации в России. По данным ЦБ, Россия входит в топ-5 стран по общему количеству платежных транзакций и в топ-3 – по доле онлайн-платежей на человека среди...
BlameMaynard, Не стоит путать действительно умных и рисковых. Может повезти один, два, 20 раз, а на 21-й будет как у Олейника. 15 лет трейдинга, ворочание сотнями миллионов, сгорание в нулину, в до...
Пусть бабулю теребят, чтоб ключ снизила втрое. А то ОФЗшки замаются выпускать. Они только бабло впитывают, да и рисовать его придётся для погашения — налогами замаются собирать. Покуда проще в ОФЗ зам...
Лонг — максимум в 9 223 372 036 854 775 807
Ориентируетесь на соответствующие значения в а и b.
Что смущает? усложнение читаемости кода? лишние преобразования или еще что?