2013-05-21 9 views
7

Se devo, per esempio, trovare la parte intera e la parte frazionaria di un numero all'interno di un modulo asm.js, come faccio? Nessuna delle conversioni standard operators tra tipi intish e doubleish; anche Math.floor restituisce un doppio e il suo risultato non può essere forzato a un int.Conversione tra int [ish] e double [ish] in asm.js

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

risposta

10

Vyacheslav Egorov (Twitter: @mraleph) dice: utilizzare ~~ di costringere a un int. Caso particolare convalida: http://asmjs.org/spec/latest/#unaryexpression

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

Nota che il recente build di FF (canale nightly) richiederà '~~ + piano (n)', o, talvolta, '~~ + piano (n) | 0 '. – ZachB

Problemi correlati