为了账号安全,请及时绑定邮箱和手机立即绑定

在 Java 中处理 INR 货币的正确方法

在 Java 中处理 INR 货币的正确方法

aluckdog 2022-06-15 15:10:45
我有这个 INR 代码long tenderedAmt = (long) NumberFormat.getNumberInstance(new Locale("en", "in")).parse(jAmtTenderedFormattedTextField.getText());`但是当我输入金额 00.50 时抛出异常java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Long使用DoubleDouble tenderedAmt = (Double) NumberFormat.getNumberInstance(new Locale("en", "in")).parse(jAmtTenderedFormattedTextField.getText());此代码段引发相同的异常。使用Double tenderedAmt = (Double) jAmtTenderedFormattedTextField.getText());在上面的代码片段中,如果我输入了 1000.00,它假设是 1.00 而不是千。和投掷java.lang.NumberFormatException: For input string: "1,000.00"那么我怎样才能以正确的方式接近货币呢?
查看完整描述

1 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

这是方法的javadoc,parse这就是它所说的:

从给定字符串的开头解析文本以生成一个数字。该方法可能不会使用给定字符串的整个文本。

因此,如果我们将结果分配给Number类型,它应该给我们正确的值,例如:

Number result = NumberFormat.getNumberInstance(new Locale("en", "in")).parse("1000.00");
System.out.println(result.doubleValue());

1000.0这应该按预期打印。此外,我们不需要将cast其转换为任何类型。我们可以简单地调用doubleValue()orlongValue()或任何其他xxxValue()方法来获取相应的类型。

如果它打印,1.0那么我建议检查返回的值jAmtTenderedFormattedTextField.getText()


查看完整回答
反对 回复 2022-06-15
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信