javascript - 在 asm.js 中转换 int[ish] 和 double[ish]

标签 javascript firefox asm.js

如果我需要,比如说,在 asm.js 模块中找到一个数字的整数部分和小数部分,我该怎么做?没有standard operators在 intish 和 doubleish 类型之间转换;即使 Math.floor 返回一个 double ,它的结果也不能被强制转换为一个 int。

var floor = stdlib.Math.floor;

function(n) {
    n = +n;
    var a = 0;
    a = floor(n)|0; // fails: "Operands to bitwise ops must be intish"
    var b = 0.0;
    b = +(n-a); // would fail if compiler got to here
    return;
}

最佳答案

Vyacheslav Egorov (twitter:@mraleph) 说:使用 ~~ 强制转换为 int。特殊验证案例:http://asmjs.org/spec/latest/#unaryexpression

a = ~~floor(n); // success!

关于javascript - 在 asm.js 中转换 int[ish] 和 double[ish],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16680533/

相关文章:

javascript - 使用为域设置的 session cookie 启动 Firefox

javascript - getpid 和 getppid 函数的 emscripten 代码

c++ - Emscripten 找不到 cmake 的路径

swift - 如何在没有任何动态库的情况下编译 swift?

javascript - 如何使用带有模块 es6 的 ECMAScript(vanilla javascript)导入

javascript - 如何从嵌套匿名函数返回值?

javascript - 在 Javascript 中引用数组的最后一个元素?

javascript - Jquery/animate.css 侧菜单在多次切换时消失

javascript - 不支持E4x后转换greasemonkey脚本

internet-explorer - SVG未在Firefox和IE中使用Kendo模板渲染