Tag: decimal point

在Java中,为什么小数分隔符遵循Locale的语言,而不是其国家/地区,更重要的是,如何覆盖它?

我正在开展一个国际项目,并且观察到,在Java中,小数分隔符的选择基于Locale的语言,而不是其国家。 例如: DecimalFormat currencyFormatter = (DecimalFormat) NumberFormat.getInstance(new Locale(“it”,”IT”)); System.out.println(currencyFormatter.format(-123456.78)); currencyFormatter = (DecimalFormat) NumberFormat.getInstance(new Locale(“en”,”IT”)); System.out.println(currencyFormatter.format(-123456.78)); 产生以下输出: -123.456,78 -123,456.78 我原本期望它跟随这个国家,因为如果我在国内,无论我说英语还是意大利语,那个国家的数字都用小数点分隔符写成逗号。 我的问题是双重的: 有谁知道为什么这种行为遵循语言? 更重要的是,任何人都可以提供有关如何修改Java中的默认行为以遵循该语言的详细信息吗? 谢谢。

如何获取小数点后的数字? (java)

double d = 4.321562; 有没有一种简单的方法从d中提取0.321562? 我试着看数学课,但没有运气。 如果这可以在不转换为字符串或转换为其他任何内容的情况下完成,甚至更好。

你可以让TextField 同时接受,和。 作为小数分隔符?

在Wicket应用程序中,我有一个十进制数字文本字段: TextField f = new TextField(“f”, new PropertyModel(model, “share”)); 我希望它始终接受两者。 (点)和,(逗号)作为小数分隔符( 无论浏览器的区域设置如何)。 为了显示该值,使用会话的语言环境[在我们的例子中强制为“fi”( – >逗号)],但在这里我对该字段接受的输入感兴趣。 我的问题是,我是否必须将字段更改为TextField ,并手动转换为域对象的类型(BigDecimal)? 或者有没有办法使用TextField (允许使用例如Wicket的MinimumValidator或RangeValidator),并且仍然接受两个小数分隔符?