Я попытался разобрать строку (-0,3) на двойную в java, используя шведскую локаль, используя этот код:
String DoubleString = "-0,3"
NumberFormat swedishNumberFormat = NumberFormat.getInstance(new Locale("sv"));
System.out.println(swedishNumberFormat.parse(doubleString).doubleValue());
Когда я пробовал с локалью sv_SE
, результат был -3.0, что, очевидно, неверно. Затем я, после много головной боли, изменил локаль на sv
(как в примере выше), и тогда результат был правильным, -0,3.
Согласно http://www.localeplanet.com/java/sv/index.html и http://www.localeplanet.com/java/sv-SE/index.html десятичным разделителем (Decimalavgränsare) в обоих случаях является запятая (,
), так почему же такая разница?
(Я пытался пометить это некоторыми тегами, связанными со Швецией, такими как sv_SE, но у меня не хватило очков репутации, чтобы добавить новые теги. Не стесняйтесь добавлять теги, если можете.)