java - 为什么即使定义为 double 也会引发此 numberformat 异常
问题描述
甲酸被定义为双对吗?有没有更好的方法来做到这一点而不使用大小数?也许在 Math 环境下,这个铸件不是那么好。那么当 halfup 表示下一个整数时,为什么会抛出它?
static String abfallEimer(double d, boolean runden)
{
String s = "";
NumberFormat nf = NumberFormat.getInstance(Locale.GERMAN);
nf.setGroupingUsed(true);
nf.setRoundingMode(RoundingMode.HALF_UP);
// BigDecimal bd = new BigDecimal(d);
// bd = bd.setScale(0, RoundingMode.HALF_UP);
// d = bd.longValueExact();
d = new Long(nf.format(d));
if (d > 1000 && !runden)
{
long kaki = Math.round(d / 1000) * 1000;
if (d > 1000000)
{
kaki /= 1000000;
s = nf.format(kaki) + " Mill.";
return s;
}
else
{
s = nf.format(kaki);
return s;
}
}
else
{
long kaki = (long) d;
s = NumberFormat.getInstance(Locale.GERMAN).format(kaki);
return s;
}
}```
线程“JavaFX 应用程序线程”java.lang.NumberFormatException 中的异常:对于输入字符串:java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) 的 java.base/java.lang 中的“1,5” .Long.parseLong(Long.java:707) at java.base/java.lang.Long.(Long.java:1344) at GBO/gui.country.combo.Country.abfallEimer(Country.java:82) at GBO /gui.country.combo.CountryInfo.lambda$0(CountryInfo.java:124) 在 javafx.base/com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(ExpressionHelper.java:360) 在 ...
解决方案
我认为问题出在这一行:
d = new Long(nf.format(d));
您正在做的是将 a 转换double
为字符串...其中包含小数点...然后尝试将其解析为整数。自然,整数解析器会抛出异常。
(这可以通过阅读您添加的异常 + 堆栈跟踪来确认,其中甚至包括它试图解析的字符串。)
Long(String)
Java 11 中的 javadoc 是这样说的:
已弃用。很少使用这个构造函数。用于
parseLong(String)
将字符串转换为long
基元,或用于valueOf(String)
将字符串转换为Long
对象。构造一个新分配的
Long
对象,该对象long
表示由 String 参数指示的值。字符串以与基数 10long
的方法完全相同的方式转换为值。parseLong
这就解释了为什么你的代码会抛出异常。
我不清楚的是你在这条线上实际上试图做什么。如果您只是尝试将 a 转换double
为 a long
,则有更简单的方法可以做到;
long l = (long) d; // truncates towards zero; see the
// JLS 4.2.4 explanation of IEE 754
// "round towards zero" conversions.
long l = Math.round(d); // rounds, biased to +infinity; see javadoc
推荐阅读
- c# - 为什么我的 AI 模型可以训练但没有进化 - ML Agents
- jquery - 在jqgrid MVC中将json转换为日期fromat
- amazon-web-services - 使用 AWS 设置新应用程序
- c# - 当客户端断开连接而不取消连接时,Websocket.ReceiveAsync 导致崩溃
- javascript - 无法读取未定义的属性“textContent”。控制台显示错误,但代码仍然有效?
- c - 在C中通过qsort进行双重比较
- swift - swift中只有一个下拉按钮处于活动状态
- javascript - 如何显示 JavaScript 数组中的多个值
- python - 嵌套'for'循环覆盖数据
- c - 不想打印多条语句