繁体   English   中英

JavaScript中带有前导零的数字

[英]Numbers with leading zeros in Javascript

我从后端收到了很长的XML。 为了进一步使用xml,我使用标准XMLtoJSON javascript库之一将其转换为JSON对象。 问题是,某些XML值包含带有前导零的数字,例如:001072。

问题是,当javascript库将xml转换为JSON时,带前导零的数字会给出完全不同的值。

例如

“ 001072”转换为“ 570”

其他时候它会正确解析它。 例如:

“ 0045678”转换为45678

问题是javascript如何处理带有零的数字。 我不知道这种奇怪行为的原因!

请提出一个可以一致地解析数字为零的解决方案,以及如何与xmltojson库一起使用

这很可能是八进制文字的问题。 如果数字以前导0开头,则JavaScript默认情况下会尝试将其解析为八进制文字。

因此,在调用parseInt时应始终指定radix参数。 该库可能不会这样做。

parseInt("012", 8); // 10
parseInt("012", 10); // 12

我认为可能是图书馆中令人反感的行。 编辑库,或编辑XML。

以零开头的八进制数字即将淘汰。 对于ECMAScript5,它们仍然可能导致问题,因此在strict mode是不允许的,并且会引发运行时错误。 您真的不应该使用非严格模式下的第三方脚本,它们由于多种原因而很危险,如八进制数字的处理所见。

随着ECMAScript 6越来越广泛地传播,使用前导零将被一起推出。

八进制字面量将带有'0o'前缀0o10 === 8可以是大写的'o',但我敢肯定,您会发现这将是一件麻烦事。 ES6还将用前缀0b1000 === 8形式化二进制格式,尽管大多数浏览器已经支持了一段时间。 十六进制也已经存在了一段时间0x08 == 8

一些带有前导零的数字是decmil,而某些八进制的原因取决于数字中的数字。 八进制不使用数字8和9,因此具有这些数字的任何数字都不能为八进制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM