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

如何在JSON对象中保留带0的小数位?

解决JSON解析后小数位0丢失的问题

问题根源

JSON的数字类型不区分整数和带末尾0的小数,解析后10000.00会被转为整数10000,导致小数位的0丢失。以下是几种可行的解决办法:


  • 方案一:存储时将金额字段设为字符串类型
    直接把需要保留小数位的字段(如salary、incentive)以字符串形式存储,解析后直接使用即可,计算时再转为数字类型:
let sampleObject = {
    "firstname": "Sundar",
    "lastname": "J",
    "salary": "10000.00",
    "incentive": "6500.50",
    "age": 25
}
// 解析后直接取字符串显示
console.log(sampleObject.salary); // 输出 "10000.00"
// 计算时转数字
const total = Number(sampleObject.salary) + Number(sampleObject.incentive);
  • 方案二:解析后格式化数字为固定小数位
    如果无法修改原始JSON结构,在解析完成后,用toFixed()方法将数字格式化为保留两位小数的字符串:
const jsonStr = '{"firstname":"Sundar","lastname":"J","salary":10000.00,"incentive":6500.50,"age":25}';
const parsedObj = JSON.parse(jsonStr);

// 格式化薪资和激励金
const formattedSalary = parsedObj.salary.toFixed(2); // "10000.00"
const formattedIncentive = parsedObj.incentive.toFixed(2); // "6500.50"

注意:toFixed()会对数字进行四舍五入,若需严格保留原始小数位,可结合Math.floor()或Math.round()做精度处理。

  • 方案三:自定义JSON解析器
    通过JSON.parse()的第二个参数(reviver函数),在解析阶段自动处理指定字段,保留小数位格式:
const jsonStr = '{"firstname":"Sundar","lastname":"J","salary":10000.00,"incentive":6500.50,"age":25}';
const parsedObj = JSON.parse(jsonStr, (key, value) => {
    // 针对薪资和激励金字段做格式化
    if (['salary', 'incentive'].includes(key)) {
        return value.toFixed(2);
    }
    return value;
});

console.log(parsedObj.salary); // 输出 "10000.00"

内容的提问来源于stack exchange,提问作者Sundaramoorthy J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:35:20