【发布时间】:2013-03-26 09:50:55
【问题描述】:
我不理解 NumberFormat 中的某些内容,在美国语言环境中,假设将逗号 (",") 视为组分隔符 - 表示千位。
为什么它会忽略此语言环境不正确位置的逗号?
NumberFormat format = DecimalFormat.getInstance(Locale.US);
System.out.println(format.parse("5,500").longValue()); //5500
System.out.println(format.parse("550,0").longValue()); //5500
System.out.println(format.parse("5500,").longValue()); //5500
如何根据语言环境将 String 解析为 Long 的任何其他想法(假设输入“,” 在不正确的区域设置应该失败)?
【问题讨论】:
-
你说的 incorrect place 是什么意思?您示例中的所有陈述都是有效的。
-
试试
format.setGroupingUsed(true)。有区别吗? -
@Puce:对于
Locale.US,默认为true。 -
@Puce,这不相关。使用解析器,但也使用 setGroupingSize(int)。即使您设置了模式“#,#00.0#”,摸索分隔符也不是格式验证的一部分,我将接受上述所有值。
-
您在哪里读到“在美国语言环境中,假设将逗号 (",") 视为组分隔符 - 数以千计”
标签: java localization locale number-formatting