You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Float.parseFloat解析JSONObject报错求助:NumberFormatException

问题分析与解决方案

这是Bug吗?

不算代码Bug,属于输入格式与解析逻辑不匹配的问题。Java的Float.parseFloat()默认遵循英文区域设置(Locale)的数值规则,只认.作为小数点分隔符;而你的输入字符串是"1,5",用逗号做小数点,导致解析时触发NumberFormatException。

解决方法

方法1:直接替换逗号为小数点(简单场景)

如果能确定输入里的逗号一定是小数点(不存在千分位逗号的情况),可以直接替换后再解析:

String qtyStr = jsonobject.getString("QtyProduct").replace(",", ".");
float calc_qty = qtyFind - Float.parseFloat(qtyStr);

方法2:用本地化数值解析器(严谨场景)

如果输入是来自使用逗号作为小数点的区域(如欧洲多国),推荐用DecimalFormat结合对应Locale解析,能兼容符合该区域规范的数值格式:

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
import java.text.ParseException;

// ...

String qtyStr = jsonobject.getString("QtyProduct");
NumberFormat numberFormat = NumberFormat.getInstance(Locale.GERMANY); // 示例Locale,根据实际输入区域调整
try {
    float qty = numberFormat.parse(qtyStr).floatValue();
    float calc_qty = qtyFind - qty;
} catch (ParseException e) {
    // 处理解析失败的情况,比如输入格式不合法
    e.printStackTrace();
}

方法3:规范JSON输入(最优方案)

JSON标准中数值的小数点是.,建议协调数据源输出符合JSON规范的数值格式,从根源避免格式兼容问题。

内容的提问来源于stack exchange,提问作者Oky Prasetya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:23:10