ParseInt рассчитывает разобрать строку в качестве аргумента, так преобразует его в сначала.
1/1000000
при преобразовании в строку "0.000001"
, parseInt затем игнорирует все, начиная с "." так как он предназначен только для целых чисел, поэтому он читает его как 0
.
1/10000000
настолько мал, что преобразование его в строку использует экспоненциальное "1e-7"
, ParseInt затем игнорирует все, от «е» и так далее, так как это только для целых чисел, так что он читает его как 1
.
В принципе, parseInt просто не то, что вы должны делать.
Чтобы преобразовать число в целое число, или его с 0, так как любая операция поразрядного в JavaScript заставляет число в 32-битном междунар и ORing с 0 не изменяет значение сверх того, что:
>(-1/10000000)|0
0
>1234.56|0 // truncation
1234
>(2147483647+1)|0 // integer overflow
-2147483648
Как насчет параметра raddix? Он дает тот же результат? –
, потому что 1/10000000 возвращает 1e-7, а 1/1000000 возвращает 0.000001. он отличается тем, как parseInt на самом деле работает ... – FrEaKmAn
@TimVermaelen такой же результат. –