当任何输入字符串可能表示大于'Number.MAX_SAFE_INTEGER'的数值时,使用'str1 我想使用str1 < str2 ? -1 : str1 > str2进行字母排序。 但是,我的输入字符串代表大整数(对于所有问题,都使用十六进制格式)。 即使任何输入字符串表示的数字值都大于Number.MAX_SAFE_INTEGER,还是可以安全地使用上面的比较,或者在比较之前,NodeJS会将这些String对象转换为Number对象(在这种情况下,我会可能会有数据丢失的风险)? 谢谢!! 我想使用str1 str2用于字母排序。但是,我的输入字符串表示大整数(对于所有问题,均为十六进制格式)。使用安全吗...

问题描述 投票:0回答:1

我想使用str1 < str2 ? -1 : str1 > str2进行字母排序。

但是,我的输入字符串代表大整数(对于所有问题,都使用十六进制格式)。

即使任何输入字符串表示的数字值都大于Number.MAX_SAFE_INTEGER,还是可以安全地使用上面的比较,或者在比较之前,NodeJS会将这些String对象转换为Number对象(在这种情况下,我会可能会有数据丢失的风险)?

谢谢!!

javascript node.js string numbers string-comparison
1个回答
0
投票

不,它使用不安全,甚至不依赖于Number.MAX_SAFE_INTEGER。比较将使用字典顺序排序:

console.log("10" < "2"); //true
console.log(10 < 2); //false

相反,您可以使用String#localeCompare with the numeric option。这将对字符串使用数字排序规则,并且可以正确处理数字:

String#localeCompare
© www.soinside.com 2019 - 2024. All rights reserved.