В следующем коде, который я взял из учебника , я получаю странный результат.
IntSummaryStatistics ageSummary =
persons
.stream()
.collect(Collectors.summarizingInt(p -> p.age));
System.out.println(ageSummary);
// IntSummaryStatistics{count=4, sum=76, min=12, average=19,000000, max=23}
Среднее значение - это разделенный запятыми двойной символ, это первый раз, когда я получаю запятую с разделением запятой в Java Во всех остальных случаях я получаю точку, разделенную вдвое. Например:
System.out.println(1.0); // 1.0
Я проверил свою локаль, и она установлена на en_US, я даже пытался установить ее вручную со следующими аргументами:
-Duser.country=US -Duser.language=en
Ничего не изменилось.
Что может быть причиной? Думаю, тот факт, что я живу в Бельгии, не должен влиять на JVM или нет? Спасибо.
Edit:
Ниже я добавил методы класса toString () и getAverage (). И уже выяснилось, что это класс в JDK.
public String toString() {
return String.format(
"%s{count=%d, sum=%d, min=%d, average=%f, max=%d}",
this.getClass().getSimpleName(),
getCount(),
getSum(),
getMin(),
getAverage(),
getMax());
}
public final double getAverage() {
return getCount() > 0 ? (double) getSum() / getCount() : 0.0d;
}
Ссылка на Javadoc.
И теперь я понял, что если я печатаю с String.format("%f", 1.0)
, я также получаю разделитель запятых. Никогда раньше этого не видел, я, наверное, смотрел на это раньше.
Редактировать 2:
jdk1.8.0_181 - это моя версия JDK.