Javascript Float32Array wierdness
Javascript Float32Array wierdness
如果我运行这段代码:
var a = new Float32Array(3);
a[0] = 1;
a[1] = 1.1;
a[2] = 1.00001;
我得到a
的结果:
[1, 1.100000023841858, 1.0000100135803223]
为什么Float32Array
要那样篡改我的数字?此外,我如何知道哪些数字可以准确地表示为32位浮点数?
32位浮点数只有7位有效数字。正常情况下,将浮点数存储为与指定数最接近的近似值。
一个32位浮点数不能完全存储值1.1
,它能存储的最接近的值是1.100000023841858
。
对于7位有效数字,数字仍然是准确的,即1.100000
。
通常,当显示浮点数时,会根据它能准确存储的有效位数进行四舍五入。您用来显示数字的东西显然不会进行这种舍入,这就是为什么您会看到数字精度的限制。
假设这些32位浮点数使用IIIE 754标准,它们可以表示从1.18 * 10-38到3.4 * 1038的值。
相关文章:
- float's未返回到移动视图结束后的位置
- Angular 2:如何在 GET 和 POST 请求中设置 double、float、int 和布尔类型参数
- 在Javascript中将int 12345转换为float 1.2345
- parseFloat未将sql中的字符串值更改为float
- 在javascript中解析Float()之前,我应该先调用String()吗
- 只允许使用javascript和mootools在字段中输入int和float
- 可以't在Firefox中设置element.style.float
- 使用 JavaScript 查找 CSS Float
- 在jquery中检测数字是INT还是FLOAT
- 使用MVC 5和Bootstrap Modals的Wierdness
- 在 jQuery 中添加 Float 值
- 快乐/乔伊验证 float().
- JavaScript - NaN wierdness
- Angularjs orderBy on float
- float Array compression in javascript
- Json Object不能使用parse.com云功能Android强制转换为Float
- Regex仅为货币标识float或int
- javascript:解析开始和结束都带有字符串前缀的float
- 调整容器分区大小时,使用css float进行布局,不移位
- 如何在javascript中将Uint8Array转换为float