javascript - js数值转换自动 四舍五入?
高洛峰
高洛峰 2017-04-11 10:02:23
[JavaScript讨论组]

为什么会出现上图的问题?原理是什么?

'{"a":1234567890123456789,"b":1234567890123456789}' 如果是这样的一个json字符串怎么解析出来呢?用没有现成的轮子?

str = '{"a":1234567890123456789,"b":1234567890123239,"c":1234567890,"d":NaN}';
str = str.substr(1);
str = str.substr(0,str.length-1);
str.split(",");
arr = str.split(",");
obj = {};
arr.forEach(function(el,index){
    var arr1 = el.split(":");
    obj[arr1[0]]=(arr1[1]);
});
console.dir(obj);
//这是我刚写的一个写法,我就想知道还有什么炫酷的方法没有

JSON.parse()不可以

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(4)
天蓬老师

数值太大,零度丢失

天蓬老师

谢邀,来晚了,最大值那个楼上都说了,我来说一下炫酷json那个。

我的思路一般都是正则

var str = '{"a":1234567890123456789, "b": 1234567890123456789, "c": 1234567890123456789}';
var json = JSON.parse(str.replace(/\:\ *(\d*?)\ *(\,|\})/g, (a, b, c) => `:"${b}"${c}`));
console.log(json);

更新
加了是否是value的检测判断

var str = '{"a":1234567890123456789, "b": 1234567890123456789, "c": 1234567890123456789,"d":":123,", "e": ":1234567890123456789,"}';

var formatStr = str.replace(/\:\ *(\d*?)\ *(\,|\})/g, (a, b, c, d, e) => {
  if (e.substr(0, d).split('"').length % 2 === 0) return a;
  return `:"${b}"${c}`;
});

console.log(JSON.parse(formatStr));
高洛峰

支持楼上。
解决方法是 保存为了 string 类型

阿神

你可以看一下es6数值扩展

js能正确表示-2^53到2^53之间的,超过这个范围就不精确了.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号