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

使用NumberFormat格式化数字时报Cannot format given Object as a Number错误如何解决

错误原因

你代码中抛出Cannot format given Object as a Number异常的直接原因是:

  • NumberFormat的format方法仅支持接收Number类型的入参(比如Long、Double、Integer等),但你在调用时传入了Long.toString()生成的字符串类型值,类型不匹配触发异常。
  • 额外潜在问题:如果你从paramValue节点拿到的原始值就是1 000 048,35这种带空格千位分隔符、逗号做小数分隔符的斯洛伐克格式字符串,直接调用Long.parseLong()也会解析失败,该方法无法识别格式字符。

修正方案

场景1:paramValue返回纯数字字符串(比如100004835,需除以100后格式化)

直接删除Long.toString()调用,将数值计算结果直接传给format即可:

Document document = convertStringToDocument(response.getBody());
String error = Objects.requireNonNull(document).getElementsByTagName("status").item(0).getTextContent();
NumberFormat nf = NumberFormat.getInstance(new Locale("sk", "SK"));
long originalNum = Long.parseLong(Objects.requireNonNull(document)
                .getElementsByTagName("paramValue").item(0).getTextContent());
// 直接传入Long类型参数,不需要转String
String value = nf.format(originalNum / 100);
List<ValueItem> valueItems = new LinkedList<>();
ValueItem balance = new ValueItem();
balance.setKey("balance");
balance.setName("Баланс");
balance.setValue(value);
valueItems.add(balance);
additionalSuppliersReturn.setValueItems(valueItems);

场景2:paramValue返回带格式的字符串(比如1 000 048,35)

需要先用对应Locale的NumberFormat先解析原始字符串为数值,再做后续处理:

Document document = convertStringToDocument(response.getBody());
String error = Objects.requireNonNull(document).getElementsByTagName("status").item(0).getTextContent();
NumberFormat nf = NumberFormat.getInstance(new Locale("sk", "SK"));
String rawValue = Objects.requireNonNull(document)
                .getElementsByTagName("paramValue").item(0).getTextContent();
// 先解析带格式的字符串为数值
Number parsedNum = nf.parse(rawValue);
long calculatedNum = parsedNum.longValue() / 100;
String value = nf.format(calculatedNum);
List<ValueItem> valueItems = new LinkedList<>();
ValueItem balance = new ValueItem();
balance.setKey("balance");
balance.setName("Баланс");
balance.setValue(value);
valueItems.add(balance);
additionalSuppliersReturn.setValueItems(valueItems);

内容的提问来源于stack exchange,提问作者shoxrux sindarov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:27:02