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

我有这个 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

使用Double

Double 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"
那么我怎样才能以正确的方式接近货币呢?


aluckdog
浏览 89回答 1
1回答

蛊毒传说

这是方法的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()。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java