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/

10-10 08:36