потому что тут используются настройки системной локали (в разных странах используется разные разделители . или ,)
Выбирай страну с твоим форматом или проси пользователей вводить числа в формате, принятом в своей стране (указанной в системной локали ОС)
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); // Locale.US если надо точку, осторожно запятая с ним игнорируется как разделитель тысяч
Number number = format.parse("1,234");
double d = number.doubleValue();
p.s. каких только глюков я с этой точкой не вижу
программисты в россии привыкли к точке, а в стандарте ожидается запятая.
например приложение сбер на экране рисует запятую, но вводить для копеек надо точку (запятая выдаст ошибку)
но самое паршивое, когда народ лезет в настройки локали windows и меняет запятую на точку и получает еще больше глюков с тем же ms office