资讯专栏INFORMATION COLUMN

ES2018 学习笔记(1)NumberToString

lykops / 843人阅读

摘要:如果等于则返回字符串。注意表示十进制表现形式的位数,不能被整除,并且的最低有效位数不必由这些标准唯一地确定。科学计数法步骤描述了小于位的正整数正常显示步骤有一个隐含条件未直说,即。步骤规定了非以上情况下使用科学计数法。

章节翻译
7.1.12.1 NumberToString ( m )

抽象操作 NumberToString 将 Number 类型的变量 m 转换成 String 格式,步骤如下:

如果 m 等于 NaN,则返回字符串 "NaN"

如果 m 等于 +0-0,则返回字符串 "0"

如果 m 小于 0,则返回字符串 "-"! NumberToString(-m)

如果 m 等于 +∞, 则返回字符串 "Infinity"

否则,假设 nks 都是整数,并且 k ≥ 110k-1≤ s < 10km 等于 s × 10n-kk 尽可能小。注意:k 表示 s(十进制表现形式)的位数,s 不能被 10 整除,并且 s 的最低有效位数不必由这些标准唯一地确定。

如果 k ≤ n ≤ 21,则返回以下字符串:

s 的十进制表示的 k 位数的代码单位(按顺序,没有前导零)

出现 n-k 次代码单元 0x0030(DIGIT ZERO)

如果 0 < n ≤ 21,则返回以下字符串:

s 的十进制表示的最高 n 位数的代码单元

代码单元 0x002E (FULL STOP)

s 的十进制表示的剩余 k-n 位的代码单元

如果 -6 < n ≤ 0,则返回以下字符串:

代码单元 0x0030 (DIGIT ZERO)

代码单元 0x002E (FULL STOP)

出现 -n 次代码单元 0x0030 (DIGIT ZERO)

s 的十进制表示的 k 位的代码单元

否则,假如 k = 1,则返回以下字符串:

单个位数 s 的代码单元

代码单元 0x0065 (LATIN SMALL LETTER E)

如果 n-1 是正数,则返回代码单元 0x002B (PLUS SIGN),否则,返回代码单元 0x002D (HYPHEN-MINUS)

整数 abs(n-1) 的十进制表示的代码单位(没有前导零)

返回以下字符串:

s 的十进制表示的最高有效位的代码单元

代码单元 0x002E (FULL STOP)

s 的十进制表示的剩余 k-1 个位代码单元

代码单元 0x0065 (LATIN SMALL LETTER E)

如果 n-1 是正数,则返回代码单元 0x002B (PLUS SIGN),否则,返回代码单元 0x002D (HYPHEN-MINUS)

整数 abs(n-1) 的十进制表示的代码单位(没有前导零)

代码单元

参考

典型例子 被忽略的符号
String(+NaN)  // "NaN"
String(-NaN)  // "NaN"
String(+0)    // "0"
String(-0)    // "0"
String(-1)    // "1"

无论 NaN 带不带符号,数值都是 NaN

第二步规定了对 0 的符号进行忽略

第三步之外的步骤都忽略了正数的符号

前导 0
String(99)  // "99"
String(099) // "99"

见步骤 6、9、10

进制数
String(11)  // "11"
String(011) // "9"

通通转换成十进制先。

科学计数法
String(1e20)      // "100000000000000000000"
String(1e21)      // "1e21"
String(1e-6)      // "0.000001"
String(1e-7)      // "1e-7"

步骤 6 描述了小于21位的正整数“正常显示”

步骤 7 有一个隐含条件未直说,即 n < k。即,大于1的小数。

步骤 8 规定了小于 1 并且小数位前置 0 的位数小于 6 的小数。

步骤 9-10 规定了非以上情况下使用“科学计数法”。

精度丢失
String(1e20 + 1)  // "100000000000000000000"

参考

primitive value corresponding to a double-precision 64-bit binary format IEEE 754-2008 value

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96198.html

相关文章

  • ES2018 学习笔记(2)&& 和 || 的运算优先级

    摘要:为什么比优先级高起因偶然在网上搜索运算符优先级,几乎每个版本都告诉读者比优先级更高,包括这样的权威网站也不例外。这与自己经验不符它们应该是优先级一样的。 为什么 && 比 || 优先级高? 起因 偶然在网上搜索 js 运算符优先级,几乎每个版本都告诉读者 && 比 || 优先级更高,包括 MSN 这样的权威网站也不例外。 MDN Operator_Precedence 这与自己经验不符...

    james 评论0 收藏0
  • ES2018 学习笔记(3)标识符

    摘要:属性名属性访问器属性两种表示法点表示法,例如方括号表示法,例如其中,点表示法中要求之后必须跟着。回看上面提到的标识符的定义任何点表示法,都能转换成方括号表示法反之,则行不通。总结属性名不是标识符。 以下内容来至 es2017 语言规范和 javascript 高级程序设计(第三版) 起源:标识符的定义 在红宝书 3.1.2 章节中,对标识符做了如下定义: An identifier i...

    roland_reed 评论0 收藏0
  • ES2018 学习笔记(4)Unicode 和 ISO 10646

    摘要:一致性和的关系历史上存在两个独立的尝试创立单一字符集的组织,即国际标准化组织和多语言软件制造商组成的统一码联盟。两个项目仍都存在,并独立地公布各自的标准,但统一码联盟和都同意保持两者标准的码表兼容,并紧密配合以保证之后的扩展也一致。 一致性 A conforming implementation of ECMAScript must interpret source text inpu...

    darkerXi 评论0 收藏0
  • 项目中JavaScript 中最大的安全整数

    摘要:什么是最大安全整数是一个值为的常量。因为的数字存储使用了中规定的双精度浮点数数据类型,而这一数据类型能够安全存储到之间的数值包含边界值。 什么是最大安全整数? MAX_SAFE_INTEGER 是一个值为 9007199254740991的常量。因为Javascript的数字存储使用了IEEE 754中规定的双精度浮点数数据类型,而这一数据类型能够安全存储 -(253 - 1) 到 2...

    894974231 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<