При обновлении сборки с Java 1.6 до 1.7 наши модульные тесты начали сбой из-за различий между тем, как две версии обрабатывают печать завершающих нулей в парном разряде.
Это можно воспроизвести с помощью этого примера:
double preInit = 0.0010d;
System.out.println("pre-init: " + preInit);
System.out.println(" inline: " + 0.0010d);
Java 1.6 выведет:
pre-init: 0.0010
inline: 0.0010
Java 1.7 выведет:
pre-init: 0.001
inline: 0.0010
У меня есть 2 вопроса:
- Почему печать встроенного конкатенации отличается от той же конкатенации с предварительно инициализированным значением?
- Какое изменение между Java 1.6 и 1.7 вызывает разницу в выходе с версии на версию?