BigInt和数字之间的数字比较会将一个参数强制为BigInt,还是将一个参数强制为数字?

例如,在下面的例子中,3n是强制为3,还是1是强制为1n

console.log(3n > 1) // true

两个操作数似乎都是4中的converted to a "mathematical value".IsLessThan抽象运算的k;designated ℝ in the specification的过程.

然而,我不知道这意味着什么.

我注意到:

console.log(19_999_999_999_999_998 > 19_999_999_999_999_999n) // true

也许是"数学值",ℝ, 在199999999999998中,是200000000000000000值的描述符,这是最接近的IEEE754表示形式?

考虑到一个数字可以有一个分数分量,而一个BigInt不能,我仍然不理解是否可以说发生了强制.

推荐答案

BigInt和数字之间的数值比较会将一个参数强制为BigInt,还是将一个参数强制为Number?

也不当您阅读规范时,会比较它们的数学值.

考虑2n < 2.4.如果两者都转换为BigInt,则要么得到一个异常("cannot convert non-integer to BigInt"),要么得到结果false,因为2n不小于2n.但不,我们得到的结果是true,因为"ℝ(2n)<;ℝ(2.4)"is"2<;2.4"这是真的.

考虑9007199254740993n > 9007199254740992.如果将两者都转换为数值,则会得到结果false,因为9007199254740993大于Number.MAX_SAFE_INTEGER并失go 精度,成为不大于9007199254740992的数值9007199254740992.但不,我们得到的结果是true,因为"ℝ(9007199254740993n)>;ℝ(9007199254740992)"is"9007199254740993>;9007199254740992"这是真的.

也许是"数学值",ℝ, 是否是最接近的IEEE754表示?

不,这是Number value for x,也表示为????(x),它从mathematical value(real numbers)或extended mathematical value(实数加两个无穷大)转换为具体的(IEEE 754双精度浮点)103 value.数学值是抽象的,有许多实数既不能准确地表示为BigInt也不能表示为数字.

Javascript相关问答推荐

在shiny 模块中实现JavaScript

React存档iframe点击行为

通过使用100%间隔时间来代表我们还剩多少时间来倒计时

如何找出摆线表面上y与x相交的地方?

Angular 中的类型错误上不存在获取属性

如何发送从REST Api收到的PNG数据响应

更新动态数据中对象或数组中的所有值字符串

未加载css colored颜色 ,无法将div设置为可见和不可见

当我在Reaction中创建一个输入列表时,我的输入行为异常

如何在JAVASCRIPT中临时删除eventListener?

向数组中的对象添加键而不改变原始变量

面对代码中的错误作为前端与后端的集成

为什么我的按钮没有从&q;1更改为&q;X&q;?

自定义确认组件未在vue.js的v菜单内打开

更新Redux存储中的对象数组

将相关数据组合到两个不同的数组中

我不知道如何纠正这一点.

react 路由如何使用从加载器返回的数据

ReferenceError:无法在初始化之前访问setData

JSX/React -如何在组件props 中循环遍历数组