Слишком часто я что-то налетаю на странности, мягко говоря, языка Java, на котором много приходится писать без его знания.
Например, без объявления войны Math.round с больших чисел дает ну очень маленькие значения. Внимательное чтение документации дает вывод, что эта хрень округляет только небольшие целые числа. Иными словами, округлять результаты деления гигабайт в байтах этой функцией нельзя. А что несколько миллионов округлили молча - ну, читайте внимательно документацию...
Записать в коде константу 3000000000 - нене, вы чо, это слишком большое целое... Ппц, а преобразовать неявно никак?
Тут поленился, записал 3*1024*1024*1024, знаете, что получил? -1073741824 (!) без единого предупреждения! Что это за нахрен вообще?! Переполнение регистров?! Откуда минус-то? Я убился искать, почему условие никогда не срабатывает.