sp123 wrote: ↑15 Sep 2021 17:45
Строгая типизация в Java?
double data = 11111111111.00;
int value = (int)data;
System.out.println(value);
Результат: 2147483647
Вот спасибо. Вместо того, чтобы выдать ошибку, эта сволочь тихо генерирует случайное число. И это не считается багом. Типа, читайте документацию. Сам я не джавист ни разу, но подобные приколы иной раз косвенно задевают. Года три назад половину отпуска в Мексике сидел как идиот и переливал огромную hive таблицу из-за того, что в поле bigint кто-то несколько месяцев вставлял данные, которые в исходной базе были double, и всё работало чудесно без ошибок. Пока бизнес не удивился странным результатам. Хадуп-то весь на жабе написан. Повбывав бы.
Sent from my iPhone using Tapatalk Pro
Я конечно же понимаю и разделяю Ваше негодование, но в приведённом коде программист сам себе злобный Буратино.
Там же явное приведение типов double к int. То, что программист не в курсе, что в Java тип int занимает 32 бита один из которых знаковый - это скорее проблемы погромиста. Там в Вашем примере на выходе не случайное число а 2^31, это максимум что может вместить int в Java. Там целая процедура конвертации примитивных типов написана и в документации описано что и почему там получается. В С/С++ все точно также бы переполнилось при явном приведении типов без метания всяких исключений.
Не зря же компилятор настойчиво предупреждает о возможном переполнении если присваивать без явного приведения типов. Ну а если погромист настаивает, то кто ж ему перечить-то станет?