纳特
编程语言中的数字是有意义的,因为我们把它们带到
代表抽象的数学数字。 JavaScript 有两种数据类型
代表数字, 联文编号 (IEEE 64位浮点)和 大写
(任意精确整数). 并非所有的抑制数学
数字可以用这些数据类型来表示,而不是其中之一的所有值
这些数据类型代表数学数字(JS数字类型) NaN, (中文(简体) ),
Infinity,以及 -Infinity),因为JavaScript使用"数字"来指代
它的浮点数据类型, 我们总是说"数学数字" 当
这就是我们的意思.
此软件包涉及数学 自然数非阴性 整数. 所有这些可以安全地代表大意,足够了 记忆。 其中一些可以作为联署材料的编号,较小的一组可以 安全带 鉴于安全的具体概念,应作为联署材料编号.
关于浮动点的可跳过的细节 :
- Java 脚本表达式
2**70对联署材料的号码进行评估的准确性 代表您期望的数学数字。 然而, Java 脚本 表达式2**70+1 === 2**70评估到true因为这个联署材料号码是: 在JS数字类型可以覆盖的整数范围之外 代表 毫不含糊。 。 。 . 完全可代表整数的相接范围是-(2**53)改为2**53然而,2**53+1 === 2**53实值true,显示 其他整数将圆为2**53。JavaScript 标准定义 页:1 保险 联文编号 代表数学整数并存在于 范围-(2**53-1)改为2**53-1JS的安全自然数字是: 该非负子集,介于0财务报告和审定财务报表2**53-1无其他整数 强迫其中任何一种。 如果在 Java 脚本中a + b === c和所有三个值 是JS安全整数,然后准确代表数学总和 的数学数字.
相形之下,大通数据类型本质上是安全的。 每个大人物 >= 0n
安全地代表一个自然数字.
这个软件包输出两个功能, isNat(allegedNum) 财务报告和审定财务报表 Nat(allegedNum)。 。 。 .
是纳特( 指称的Num: 任何) QQ布尔
isNat(3); // true
isNat(3n); // true
isNat('3'); // false
isNat(2**70); // false
isNat(2n**70n); // true
isNat(-3n); // false
isNat(3.1); // false
这个 isNat 函数是一个接受任何输入和返回的上游 true
如果输入安全地代表自然数字,即如果输入是非负数
bigint或是一个安全代表整数的非负联署材料号码。 给
我们认为数学自然数的抽象概念
类型, isNat 是一个 类型测试器 可能提出的此类意见.
Nat( 指称的Num: bigint -- -- 数字)
Nat(3); // 3n
Nat(3n); // 3n
Nat('3'); // throws TypeError
Nat(2 ** 70); // throws RangeError
Nat(2n ** 70n); // 1180591620717411303424n
Nat(-3); // throws RangeError
Nat(3.1); // throws RangeError
这个 Nat 函数完全接受通过 isNat
上观相. 对于那些它返回一个代表 相同的自然的重力
编号。 否则就扔了.
校验器和校正器
诸如 Nat 和标准的 Java 脚本 BigInt 可能会是
分类 验证符 或者说 胁迫者。 。 。 .
当一个验证员接受 - - - 通常返回 而不是扔 - -
了解他们的输入参数如预期,输出与
输入。 当胁迫者接受时,呼叫者知道输出为:
但只知道输入是胁迫者愿意的
转换从。 这个 BigInt 函数是胁迫者。 它甚至会接受
字符串作为输入,但输出总是大写. Nat 这很有趣
混合剂。 它是一个抽象层面的胁迫者,并且是一个验证者
另一层次的抽象.
在混凝土JavaScript数据表示层面, Nat 很明显
胁迫者 --Nat 将一个合格的联署材料号码转换成大意。 一级
任何接受的输入所代表的数学数字的抽象化, Nat
是一个验证符。 若为 Nat 成功使呼叫者知道他们的输入安全
代表一些抽象的数学自然数,输出
安全地代表同一个抽象的数学自然数. 一级
抽象,在成功时,输出与输入相同.
历史
Nat 由Google Caja计划提供
纯正而毫不含糊的原始整数
可代表的非负整数.
更多,请看 tC39说明中的讨论