We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Number
[[NumberData]]
[[Prototype]]
规范中短语 "this Number value" 表示将方法的 this 值作为参数传给抽象操作 thisNumberValue 调用后返回的结果
初始值为 %Number%
// 有趣 // 和 https://github.com/lizhongzhen11/lizz-blog/issues/96 提到的思考本质是一样的 77.toExponential() // 报错 77..toExponential() // "7.7e+1" 77 .toExponential() // "7.7e+1"
定义 x 为 ? thisNumberValue(this 值)
定义 f 为 ? ToInteger(fractionDigits)
断言:如果 fractionDigits 为 undefined,则 f 为 0
如果 x 不是有限的,返回 ! Number::toString(x)
如果 f < 0 或 f > 100,抛 RangeError 异常
定义 s 为空字符串
如果 x < 0,
如果 x = 0,
否则,
如果 f ≠ 0
如果 e = 0,
设置 m 为 m,"e",c 和 d 的字符拼接
返回 s 和 m 的字符拼接
2.34.toFixed(3) // '2.340' 2.45.toFixed(1) // '2.5' 2.55.toFixed(1) // '2.5' -2.34.toFixed(1) // -2.3 (-2.34).toFixed(1) // '-2.3' 2.34.toFixed(100) // 自己去试下吧
对于某些值,toFixed 的输出可能比 toString 更精确,因为 toString 仅打印足够的有效数字以将数字与相邻数字值区分开。
toFixed
toString
(1000000000000000128).toString() // "1000000000000000100" (1000000000000000128).toFixed(0) // "1000000000000000128"
// 好方便啊,我真第一次知道 123456789 .toLocaleString() // "123,456,789"
该方法的 "length" 属性值为 1.
属于普通对象,属性继承自 Number 原型对象。实例也有 [[NumberData]] 内置插槽。该插槽表示该 Number 对象的 Number 类型值
主要还是浮点运算问题。看算法内部,走第9步:
由于js采用 IEEE-754 64位双精度浮点类型来表示数字,所以先要得出 25.5 的二进制表示,然后再确定最接近的那个整数。这个算起来好麻烦。。。
我第一想法就是用 toLocaleString,不过转换成 . 真没记住。。。
toLocaleString
.
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Number 原型对象和实例上的属性
Number
对象;有[[NumberData]]
内置插槽值为 +0[[Prototype]]
内置插槽其值为 %Object.prototype%thisNumberValue(value)
Number
类型,返回 valueNumber
类型Number.prototype.constructor
初始值为 %Number%
Number.prototype.toExponential ( fractionDigits )
定义 x 为 ? thisNumberValue(this 值)
定义 f 为 ? ToInteger(fractionDigits)
断言:如果 fractionDigits 为 undefined,则 f 为 0
如果 x 不是有限的,返回 ! Number::toString(x)
如果 f < 0 或 f > 100,抛 RangeError 异常
定义 s 为空字符串
如果 x < 0,
如果 x = 0,
否则,
Number
值为 x,并且 f 尽可能的小。注意 n 的十进制表示有 f + 1 个数字,n 不能被 10 整除,但是这些标准不一定能唯一确定 n 的最低有效位。如果 f ≠ 0
如果 e = 0,
否则,
设置 m 为 m,"e",c 和 d 的字符拼接
返回 s 和 m 的字符拼接
Number.prototype.toFixed ( fractionDigits )
Number.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
Number.prototype.toPrecision ( precision )
Number.prototype.toString ( [ radix ] )
Number
值的字符串表示。字母a-z用于数值从10到35的数字。精度算法与实现有关,但是,该算法应该是 Number::toString(x) 中指定的算法的概括。Number.prototype.valueOf ( )
Number 实例属性
属于普通对象,属性继承自
Number
原型对象。实例也有 [[NumberData]] 内置插槽。该插槽表示该Number
对象的 Number 类型值为何 2.45.toFixed(1) 是 '2.5' 而 2.55.toFixed(1) 还是 '2.5'?
主要还是浮点运算问题。看算法内部,走第9步:
由于js采用 IEEE-754 64位双精度浮点类型来表示数字,所以先要得出 25.5 的二进制表示,然后再确定最接近的那个整数。这个算起来好麻烦。。。
2020-07-31 补充
Daily-Interview-Question 第143题我第一想法就是用
toLocaleString
,不过转换成.
真没记住。。。The text was updated successfully, but these errors were encountered: