java - 如何使 JFormattedTextField 使用 $1.55,但将值存储为整数 155?

标签 java swing number-formatting jformattedtextfield

我读过的关于 Java 的几乎所有内容都说不要使用 float 或 double 作为货币,但如果您想输入/显示具有小数的货币值,Swing 中的所有内容似乎都试图强制您这样做地方(也正是大多数人想做的事情)。

我可以将 NumberFormat.getCurrencyInstance()NumberFormatterJFormattedTextField 一起使用,但我不知道如何将其实现不使用 FloatDouble 显示小数位。我必须忽略一些简单的事情。

如何让我的货币字段显示 $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/

相关文章:

c# - 如何使用 Java 或 C# 填充浏览器中的字段

java - JTable 行中的重复值

java - 切换 JButton 上的文本

java - 使用DecimalFormat时如何防止减号?

c# - 自定义 .Net 库或现有库来处理序列格式?

java.lang.OutOfMemoryError GCOverhead Limit Exceeded 错误

java - 将 scala 类型规范更改为 java 类型规范

java - Spring 使用@Validated 验证 Controller

java - JRuby 无法再创建 JFrame : Java does not find WGJPI

Javascript date delta 与字符串之间的转换