栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么节点不将Math.tan(Math.PI / 2)评估为Infinity而Chrome V8可以呢?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么节点不将Math.tan(Math.PI / 2)评估为Infinity而Chrome V8可以呢?

如果查看该

Math
对象的v8实现,则会看到:

function MathTan(x) {  return MathSin(x) / MathCos(x);}

实际上,

Math.cos(Math.PI/2)
也会在Node中返回一个异常值(实际上,是异常
Math.tan
结果的倒数):

> Math.cos(Math.PI/2)6.123031769111886e-17  // in Chrome, this is 0

因此,您的问题 简化 为: 为什么

Math.cos(Math.PI/2)
Node <= 0.10.24中的非零值?

这很难回答。正弦和余弦的实现由名为的数学运算函数提供,该函数

TrigonometricInterpolation
依赖于C
++代码生成的1800个样本值的反向查找表,该代码本身是在首次安装v8时生成的Python脚本。

但是,还值得注意的是,当前的trig查找表代码最近替换了较旧的查找表,因此,当前版本的Node可能未使用最新的trig查找表(因为新代码于11月22日到达v8中)
,2013年,但在2013年12月0.10.24版之前,从v8到Node的唯一拉动是在2013年11月11日(即更改前的11天)。Chrome可能正在使用最新代码,而当前的稳定节点正在使用其他三角代码。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436530.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号