我读过的关于 Java 的几乎所有内容都说不要使用 float 或 double 作为货币,但如果您想输入/显示具有小数的货币值,Swing 中的所有内容似乎都试图强制您这样做地方(也正是大多数人想做的事情)。
我可以将 NumberFormat.getCurrencyInstance()
与 NumberFormatter
和 JFormattedTextField
一起使用,但我不知道如何将其实现不使用 Float
或 Double
显示小数位。我必须忽略一些简单的事情。
如何让我的货币字段显示 $1.55
、接受 1.55
输入并将输入存储为值为 155
的整数(美分)?
最佳答案
您无法在格式化程序上进行数学运算。你应该做的是让你的 pojo 的成员变量保存以美分为单位的价格。像这样的东西:
private long priceInDollarCents;
然后你可以有一个 getter 它将以美元返回它。像这样的东西:
public double getPriceInDollars() {
return (double)priceInDollarCents/100;
}
这就是您将传递到格式化程序中的内容。
关于java - 如何使 JFormattedTextField 使用 $1.55,但将值存储为整数 155?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8193052/