草庐IT

symbolic-math

全部标签

javascript - Chrome 中的 Math.log2 精度发生了变化

我编写了一个JavaScript程序,它根据元素的数量计算二叉树的深度。我的程序几个月来一直运行良好,但最近我发现在Chrome和Firefox中查看网页时存在差异。特别是在Firefox上:Math.log2(8)=3但现在在Chrome中:Math.log2(8)=2.9999999999999996我的JavaScript程序最初是为了根据元素的数量来查找二叉树的深度而编写的:vartree_depth=Math.floor(Math.log2(n_elements))+1;我对这个公式做了一个简单的修改,以便它在Chrome上仍然可以正常工作:varepsilon=1.e-5;

javascript - Math.random() 的精度

JavaScript的Math.random()函数的精度是多少? 最佳答案 Math.random()生成大于等于0且小于1的16位小数的float。 关于javascript-Math.random()的精度,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3344447/

javascript - 为什么 Google Chrome 浏览器的 Math.random 数字生成器不是 *that* 随机数?

今天我在各种浏览器中运行一些单元测试时遇到了一个奇怪的“错误”。在今天之前,我已经在Firefox中多次运行过测试,甚至在IE中运行过,但显然还没有在Chrome(v19-dev)中运行过。当我在Chrome中运行它们时,它始终未能通过一项测试,因为我计算的两个值不匹配。当我真正深入研究正在发生的事情时,我意识到问题在于我假设如果我用100,000个Math.random()值填充一个数组,它们都是唯一的(那里不会有任何碰撞)。事实证明,在Chrome中并非如此。在Chrome中,我始终得到至少两对匹配的值(共100,000个)。Firefox和IE9从未经历过冲突。这是我写的一个js

Javascript Math.cos 和 Math.sin 不准确。有什么解决办法吗?

Javascript数学三Angular函数返回错误结果。尝试alert(Math.sin(Math.PI));它不返回0。也许问题出在javascript十进制数精度上。是否有任何解决方法来获得正确的结果? 最佳答案 不过,它非常非常接近于零。(~10^-16)alert(Math.sin(Math.PI/2))确实返回1。这只是您在处理浮点运算时必须注意的事情之一。到处都会出现舍入错误。 关于JavascriptMath.cos和Math.sin不准确。有什么解决办法吗?,我们在St

javascript - 新的 JavaScript "Symbol"数据类型有哪些可能的使用场景?

我偶然发现了新的(针对ES6提出,但已经在Firefox、Chrome和Opera中实现)数据类型的JavaScript文档,Symbol:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbolhttp://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-objects我正在阅读它,但我想不出可能的使用场景。文档说:Asymbolisauniqueandimmutabledatatypeandmaybe

javascript - 如何使用Math.max等作为高阶函数

简而言之,这是可行的:[1,2,3].reduce(function(a,b){returnMath.max(a,b);});=>3但这不是:[1,2,3].reduce(Math.max);=>NaN纯粹的困惑。这是在Firefox3.5.9中,我认为它使用的是mozillastandardimplementationofreduce,FWIW. 最佳答案 Math.max可以用作高阶函数。问题是.reduce将调用带有4个参数的函数:Math.max(accumulator,value,index,the_array)这里the

javascript - 如何列出 Math 对象的所有属性?

当我这样做for(variinwindow)console.log(window[i])我得到一个窗口属性和方法的列表但是当我对“Math”对象做同样的事情时,我什么也得不到。typeof"window"==typeof"Math"返回TRUE,所以我看不出循环不工作的原因。这很奇怪,好像我直接写Math['E']我得到常量E的值。 最佳答案 并非所有对象属性都是可迭代的。您只会在for..in循环中获得可迭代的属性。由于window(恰好是全局对象)的大多数属性都是用户定义的全局变量,因此它们是可枚举的。在现代JavaScript

javascript - *[Symbol.iterator] 在这种情况下的含义是什么

我在网上找到了一些代码。我已将原始代码压缩成这个小摘录,运行时会在控制台上打印1-20。varNumbersFromOne={*[Symbol.iterator](){for(leti=1;;++i)yieldi;}};vartake=function*(numberToTake,iterable){letremaining=numberToTake;for(letvalueofNumbersFromOne){if(remaining--现在,我明白take()是一个GeneratorFunction。当take()被调用时,它被赋予一个迭代器。代码“...printToTwenty”

javascript - JavaScript 中 Math.max 与三元运算符的速度和风格

在JavaScript中,这样做是否更好:varh=th>ch?th:ch;或varh=Math.max(th,ch);? 最佳答案 第二个对我来说似乎更清楚,因为它显示了意图而不是实现。我怀疑在很多情况下,任何性能差异都会产生明显的差异,而且它可能无论如何都依赖于实现。 关于javascript-JavaScript中Math.max与三元运算符的速度和风格,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.

javascript - 为什么 ES6 Symbol 属性可以被 Object.defineProperty 枚举?

在ES6中属性可以定义为符号属性:varsymbol=Symbol();varobject={};object[symbol]='value';MDN将可枚举属性定义为“可以通过for..in循环迭代的属性”(1)。符号属性永远不会被for...in循环迭代,因此它们可以被认为是不可枚举的(2)。那么,您可以这样做是否有意义:Object.defineProperty(object,symbol,{value:'value',enumerable:true});并且查询对象的描述符确实确认该属性是可枚举的:Object.getOwnPropertyDescriptor(object,s