parseInt zamierza przeanalizować argument ciąg, więc konwertuje go do ciąg pierwszy.
1/1000000
po przekonwertowaniu na ciąg znaków jest "0.000001"
, parseInt następnie ignoruje wszystko od "." dalej, ponieważ jest to tylko dla liczb całkowitych, więc brzmi to jako 0
.
1/10000000
jest tak mała, że przekształcenie go na ciąg używa notacji naukowej "1e-7"
, parseInt następnie ignoruje wszystko z „e” roku, ponieważ jest to tylko dla liczb całkowitych, więc czyta go jako 1
.
Zasadniczo parseInt nie jest po prostu tym, co powinieneś robić.
Aby przekonwertować liczbę do liczby całkowitej, lub 0, ponieważ każda operacja bitowe w JavaScript zmusza liczbę do 32-bitowego int i Oring z 0 nie zmienia wartości ponad to:
>(-1/10000000)|0
0
>1234.56|0 // truncation
1234
>(2147483647+1)|0 // integer overflow
-2147483648
Co z parametrem raddix? Daje taki sam wynik? –
ponieważ 1/10000000 zwraca 1e-7, a 1/1000000 zwraca 0.000001. różni się tym, że parseInt faktycznie działa ... – FrEaKmAn
@TimVermaelen ten sam wynik. –