private JFormattedTextField getCurrencyJFormattedTextField() {
NumberFormat format= NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(4);
NumberFormatter formatter= new NumberFormatter(format);
formatter.setMinimum(0.0);
formatter.setValueClass(Double.class);
JFormattedTextField formattedTextField = new JFormattedTextField(formatter);
return formattedTextField;
}
因此,如果我明确输入“ 1.23456789”
JFormattedTextField的用户界面将显示“ 1.2346”
但是,在调用
getValue
时,返回的值是1.23456789
,而不是1.23461
final double price = (Double)jFormattedTextField.getValue();
有什么办法可以实现所见即所得的?这样底层数据结构将与UI显示保持一致?
最佳答案
您必须使用BigDecimal
作为数据类型。它是专为任意精度的带符号十进制数字创建的。
关于java - 限制JFormattedTextField的小数位数(UI外观和数据结构),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18178648/