2013-05-21 11 views
7

Bir asm.js modülünde bir sayının tamsayı bölümünü ve kesirli kısmını bulmam gerekirse, bunu nasıl yaparım? standard operators'un hiçbiri, ingilizceyi ve çiftleşmeyen türleri arasında dönüştürme yapmaz; Math.floor bile bir çift döndürür ve sonucu bir int'ye zorlanamaz.int [ish] ve asm.js olarak çift [ish] arasında dönüştürme 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; 
} 

cevap

10

Vyacheslav Egorov (twitter: @mraleph) diyor ki: int için zorlamak için ~~ kullanın. Özel doğrulama durum: FF (gece kanalınız) kurar son http://asmjs.org/spec/latest/#unaryexpression

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

Not gerektiren '~~ + kat (n)' veya bazen '~~ + kat (n) | 0'. – ZachB

İlgili konular