Ram*_*ran 4 javascript math angularjs typescript angular
Math.fround()运作.该
Math.fround()函数返回数字的最近浮点表示.
但是当它传递浮点数时,Math.fround(1.5) 它返回相同的(1.5)值.但是当它传递浮点数时,Math.fround(1.55)它返回一个不同的值1.5499999523162841.为什么和如何?
- 我很困惑如何
Math.fround()工作.- 它与
Math.round()功能有何不同?- 另请告诉我为什么它不受支持
Internet Explorer.
要了解此功能的工作原理,您实际上必须了解以下主题:
ECMA脚本为转换指定了以下算法:
使用参数x调用Math.fround时,将执行以下步骤:
- 如果x是NaN,则返回NaN.
- 如果x是+ 0,-0,+∞,-∞之一,则返回x.
- 设x32是使用roundTiesToEven将x转换为IEEE 754-2008 binary32格式的值的结果.
- 设x64是将x32转换为IEEE 754-2008 binary64格式的值的结果.
- 返回与x64对应的ECMAScript Number值.
所以,让我们做的1.5和1.55.
1)代表64位浮点数
0 01111111111 1000000000000000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
2)代表科学记数法
1.1000000000000000000000000000000000000000000000000000 x 2^0
Run Code Online (Sandbox Code Playgroud)
3)舍入到23位尾数
1.10000000000000000000000
Run Code Online (Sandbox Code Playgroud)
4)转换为十进制:
1.5
Run Code Online (Sandbox Code Playgroud)
1)代表64位浮点数
0 01111111111 1000110011001100110011001100110011001100110011001101
Run Code Online (Sandbox Code Playgroud)
2)代表科学记数法
1.1000110011001100110011001100110011001100110011001101 x 2^0
Run Code Online (Sandbox Code Playgroud)
3)舍入到23位尾数
1.10001100110011001100110
Run Code Online (Sandbox Code Playgroud)
4)转换为十进制:
1.5499999523162841
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
632 次 |
| 最近记录: |