javascript - 变量直接使用时是不一样的

标签 javascript floating-point

Google Chrome 的 Javascript 引擎对此原型(prototype)中的变量值做了一些奇怪的事情。

原型(prototype)定义为:

function matrix4def()
{
 this.m00=0;
 this.m01=0;
 this.m02=0;
 this.m03=0;
 this.m10=0;
 this.m11=0;
 this.m12=0;
 this.m13=0;
 this.m20=0;
 this.m21=0;
 this.m22=0;
 this.m23=0;
 this.m30=0;
 this.m31=0;
 this.m32=0;
 this.m33=0;
};

var value = new matrix4def();

console.log(value)向我们展示:

 m00: 1
 m01: 0
 m02: 0
 m03: 0
 m10: 0
 m11: 1
 m12: 0
 m13: 0
 m20: 0
 m21: 0
 m22: 1
 m23: 0
 m30: 0
 m31: 0
 m32: 0
 m33: 1

使用console.log(value.m00)时将向我们展示:-6.123031769111886e-17 。 做console.log(value); console.log(value.m00); console.log(value);显示 console.log(value); 的第一次和第二次调用之间没有区别.

正在做console.log(typeof(value.m00))将向我们展示:number

我尝试过 parseFloat(value.m00) ,但也没有显示 1... 存储 value.m00 的值临时值显示 -6.123031769111886e-17也是。

有人知道这里发生了什么吗?

P.S.:我无法向您展示完整的代码;它是渲染代码的一部分,对这些值进行大量处理。

最佳答案

这看起来像是 console.log 的问题,它显示对象的当前属性值,而不是记录对象时的属性值。您在日志记录周围(之后)是否有任何更改值的代码?

console.log(new matrix4def().m00)

记录0,而不是非常接近零的负值。

关于javascript - 变量直接使用时是不一样的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12457861/

相关文章:

javascript - Opera 蜻蜓脚本调试器的烦恼

javascript - Webpack require.ensure(code splitting) 与 react 组件不工作?

javascript - Angularjs 使用 ui-router 路由到不同的布局页面

floating-point - 是否可以在不求助于任意精度数据类型的情况下消除浮点错误?

python - 为什么 print int (100*(11.20 - 11)) 在 python 中打印 19 而不是 20?

JavaScript:JavaScript 什么时候评估一个函数,onload 或什么时候调用函数?

javascript - 使用 underscore.js 过滤 js 对象

c - 如何将 printf 的精度设置为固定的最大偏差?

c - 如何将 "float"变量分解为四个字节?

parsing - attoparsec 错误解析 double