为什么 DecimalFormat 忽略分组字符?
我不喜欢 Java 的 DecimalFormat 类的行为。
我想做的是使用德语区域设置在文本字段中输入值“0.23”(其中“.”是分组字符,而不是小数!!)。
预期结果为:
启用分组时:ParseException,因为分组字符位于错误的位置
禁用分组时:ParseException ,因为 '.'不允许使用字符。
实际结果:
启用分组:23.0
禁用分组:0.0
有谁知道更好的实现,或者我应该归档这个作为 Java Bug ?
I do not like the behaviour of Java's DecimalFormat class.
What I'm trying to do is input a value of "0.23" in a text field using the German locale (where '.' is the grouping character, not the decimal !!).
Expected result would be:
with grouping enabled: ParseException, because the grouping character is in the wrong place
with grouping disabled: ParseException, because the '.' character is not allowed.
Actual result:
with grouping enabled: 23.0
with grouping disabled: 0.0
Does anyone know of a better implementation, or should I file this as a Java Bug ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当禁用分组时,字符“.”不能是数字的一部分。
从 NumerFormat 的 parse(String source) API 中:
因此该方法将在读取第一个不能属于数字的字符后停止解析。因此“0.23”始终为 0。而“0,1.2.3”为 0,1
When groupping is disabled, the char '.' can not be part of a number.
From API of parse(String source) of NumerFormat:
So the method will stop parsing after reading the first char which can't be part of the number. So "0.23" is always 0. and "0,1.2.3" is 0,1
这对我有用,输出是 23 和 1000.23。
This works for me, output is 23 and 1000.23.