看到这段代码:
<html>
<head>
<script src="http://www.json.org/json2.js" type="text/javascript"></script>
<script type="text/javascript">
var jsonString = '{"id":714341252076979033,"type":"FUZZY"}';
var jsonParsed = JSON.parse(jsonString);
console.log(jsonString, jsonParsed);
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我在Firefox 3.5中看到我的控制台时,jsonParsed的值是:
Object id=714341252076979100 type=FUZZY
Run Code Online (Sandbox Code Playgroud)
即数字四舍五入.尝试了不同的值,相同的结果(数字舍入).
我也没有得到它的舍入规则.714341252076979136舍入为714341252076979200,而714341252076979135舍入为714341252076979100.
编辑:请参阅下面的第一条评论.显然这不是关于JSON,而是关于JavaScript数字处理的东西.但问题仍然存在:
为什么会这样?
在JavaScript中,每个人都知道着名的计算:0.1 + 0.2 = 0.30000000000000004.但是为什么JavaScript打印这个值而不是打印更准确和精确0.300000000000000044408920985006?