解析国际数字

parsing international numerals

本文关键字:数字      更新时间:2023-09-26

我正试图弄清楚,如果在使用中文(或其他)区域设置的浏览器中使用中文数字(或其他非拉丁符号集)渲染脚本,脚本会如何表现。在互联网上似乎找不到任何关于这方面的信息。

查看页面https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString当从数字转换为字符串时,我们看到了本地化数字的例子,但反过来呢?我在IE11调试控制台中尝试了parseInt("一二三"),它返回了NaN,但我没有使用中文Windows。有人能测试一下吗?

我的困惑来自于JavaScript有松散类型的数据,所以如果我最终遇到了一个隐式的字符串到数字的转换,比如:

var a = "١٢٣";
var b = .01;
console.log(a*b);

请注意,在一个更复杂的例子中,我的变量a和b可能来自用户输入。如果parseInt和隐式转换不起作用,在进行算术之前,如何确保来自非拉丁符号的输入在内部转换为正确的数字表示?

由于多种原因,它无法工作。首先注意,虽然存在toLocalString,但不存在parseLocalStringIntfromLocaleString。其次,javascript只有在使用特定运算符(例如==)时才真正执行隐式类型强制。然而,*不能以这种方式使用,与您所描述的相比,即使==和其他运算符也只支持非常有限的强制。

这种胁迫仍然可能非常危险或有用,这取决于你的观点。0 == false为真但0 === false是假的,但它肯定没有你想象的那么强大。