很难将python转换为JS
Having a hard time converting python to JS
我正在尝试在python中实现math.frexp
函数。如果你感到困惑,请看这里。显然,我正在汗学院的这个项目上工作。
但是,它是PJS,不支持DataView
或ArrayBuffer
。有人能帮我实现这个吗?
这是当前代码(由于DataView
/ArrayBuffer
而被注释掉)。我在网上找到这个。
var frexp = function(value) {
if (value === 0){
return [value, 0];
}
var data = new DataView(new ArrayBuffer(8));//Does not support DataView and ArrayBuffer objects.
data.setFloat64(0, value);
var bits = (data.getUint32(0) >>> 20) & 0x7FF;
if (bits === 0) {
data.setFloat64(0, value * Math.pow(2, 64));
bits = ((data.getUint32(0) >>> 20) & 0x7FF) - 64;
}
var exponent = bits - 1022,
mantissa = value * Math.pow(2, -exponent);
return [mantissa, exponent];
};
它的效率不如读取字节
exponent = Math.trunc( 1023+Math.log( Math.abs(value) )/Math.LN2 ) - 1022;
mantissa = value * Math.pow(2,-exponent);
应该返回一对,使得CCD_ 6和CCD_。在ECMA6中,商可以用Math.log2
代替。
对数的浮点评估可能导致二进幂的模糊结果。在e=exponent
太小的情况下,这可能会给出错误的结果。因此添加行
if (Math.abs(mantissa) >=1 ) { exponent +=1; mantissa /=2; }
相关文章:
- 如何使用下划线js转换这些数据
- 建议将包含不同参数的内联JS转换为外部脚本
- ember.js:转换到相同的路由会产生堆栈溢出问题
- 将普通js转换为角度语法的快速方法
- 正在将JS转换为CoffeScript,缺少操作数
- D3.js转换多个圆弧路径
- 将haml-js转换为slim
- CSS/JS转换:translate3d和滚动-在Android上流畅,在iPhone上没有动力
- 检测Bootstrap Switch Jquery中的类更改(将工作复选框JS转换为按钮JS)
- 使用underscore.js转换数组
- D3.js转换未按预期工作
- 时刻.js转换 MM/dd/yyyy 格式日期
- 如何使用没有过滤器的 Angular JS 转换日期格式
- 使用js2coffe和bash将mass.js转换为.coffee
- 将js转换为jsx的工具
- 用javascript中的moment.js转换epoch时间
- reveal.js转换为单页html
- Moment.js转换为日期对象
- 如何将此JS转换为jQuery?需要添加淡入淡出效果
- 节点js转换为json到数组