Javascript asm.js中int[ish]和double[ish]之间的转换

Javascript asm.js中int[ish]和double[ish]之间的转换,javascript,firefox,asm.js,Javascript,Firefox,Asm.js,如果我需要,比如说,在asm.js模块中查找数字的整数部分和小数部分,我该怎么做?不存在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"

如果我需要,比如说,在asm.js模块中查找数字的整数部分和小数部分,我该怎么做?不存在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。特殊验证案例:


请注意,FF(夜间频道)的最新版本需要
~+floor(n)
,或者有时需要
~+floor(n)| 0
a = ~~floor(n); // success!