2013-05-21 56 views
7

如果需要在asm.js模塊中查找整數部分和數字的小數部分,我該怎麼做? standard operators在intish和doubleish之間都沒有轉換;即使Math.floor返回一個double,其結果也不能強制爲int。asm.js中的int [ish]和double [ish]之間的轉換

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

回答

10

維亞切斯拉夫·葉戈羅夫(嘰嘰喳喳:@mraleph)說:使用~~強迫爲int。特殊情況下的驗證:http://asmjs.org/spec/latest/#unaryexpression

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

注意近期建立FF(夜間通道)的要求'~~ +地板(N)',或者有時'~~ +地板(N)| 0'。 – ZachB