我想使用str1
但是,我的输入字符串表示大整数(十六进制格式,这很重要)。
即使任何输入字符串表示的数值大于
Number.MAX_SAFE_INTEGER
,还是NodeJS会在比较它们之前将这些String
对象转换为Number
对象(在这种情况下,我将面临数据丢失的风险)?
根据ecma-262
使用'str'时
7.2.13抽象关系比较
If Type(px) is String and Type(py) is String, then
If IsStringPrefix(py, px) is true, return false.
If IsStringPrefix(px, py) is true, return true.
Let k be the smallest nonnegative integer such that the code unit at index k within px is different from the code unit at index k within py. (There must be such a k, for neither String is a prefix of the other.)
Let m be the integer that is the numeric value of the code unit at index k within px.
Let n be the integer that is the numeric value of the code unit at index k within py.
If m < n, return true. Otherwise, return false.
在任何时候都不会发生整数转换(至少不是你所说的那样)
算法应该是这样的
if (str1.startsWith(str2)) return false
if (str2.startsWith(str1)) return true
for (let i = 0; i < str1.length; ++i) {
if (str1[i] !== str2[i]) {
k = i;
break;
}
}
return str1.codePointAt(k) < str2.codePointAt(k)
所以可以使用运算符
现在得到“10”有意义吗
不,它使用起来不安全,甚至不依赖于Number.MAX_SAFE_INTEGER
。比较将使用词典排序:
console.log("10" < "2"); //true
console.log(10 < 2); //false
我想询问在使用表示大于的整数值的字符串调用时的行为。 从技术上讲,我假设我应该期待与直接使用该值相同的结果(即,作为数字而不是字符串)。 例如,以下两个将产生相同的值(无论其是否准确): 常量x=parseInt(“0x1000000000000000000000000”) 然而,我确实明白,也许JS不能保证这一点。 所以我真正想知道的是,当使用表示大于。
NowCoder 题目描述 // true "+100" "5e2" "-123" "3.1416" "-1E-16" // false "12e" "1a3.14" "1.2.3" "+-5" "12e+4.3" 解题思路 使用正则表达式进行匹配。 // html [] : 字符集合 () : 分组 ? : 重复 0 ~ 1 次 + : 重复 1 ~ n 次 * :
对不起,新手:/。所以当我在“输入你的年龄”中键入一封信时,我有这个问题 输入您的年龄:q 线程“main”java.util.InputMismatchException中出现异常 在java.util.scanner.throwfor(Scanner.java:909) 我想如果我打了任何一个字母,它显示“无效输入”。有人能帮我吗?[对不起,糟糕的英语]
一、题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 例子说明 例如,字符串“+100”,“5e2”,“-123”,“3.1416”及”-1E-16”都表示数值,但“12e”,”1a3.14”,”1.2.3”,”+-5”及“12e+5.4”都不是。 二、解题思路 在数值之前可能有一个表示正负的’-‘或者’+’。接下来是若干个0到9的数位表示数值的整数部分(在某些小数里可能没有数值
我试图将字符串时间戳转换为整数时间戳,并使用postgres作为数据库。