7

如果我需要在 asm.js 模块中找到数字的整数部分和小数部分,我该怎么做?标准运算符都没有在 intish 和 doubleish 类型之间进行转换。甚至 Math.floor 返回一个双精度数,并且它的结果不能被强制转换为一个整数。

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;
}
4

1 回答 1

10

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

a = ~~floor(n); // success!
于 2013-05-21T22:46:41.307 回答