ParseInt erwartet ein String-Argument zu analysieren, so wandelt sie in ein Zeichenfolge zuerst.
Wenn in eine Zeichenkette umgewandelt wird "0.000001"
, ignoriert parseInt dann alles von "." weiter, da es nur für Ganzzahlen ist, so dass es als 0
gelesen wird.
1/10000000
so klein ist, dass es in einem String Umwandlung verwendet wissenschaftliche Notation "1e-7"
, parseInt ignoriert dann alles von „e“ ab, da sie nur für ganze Zahlen sind, so liest er es als 1
.
Grundsätzlich ist parseInt einfach nicht das, was Sie tun sollten.
Um eine Zahl auf eine ganze Zahl zu konvertieren, oder mit 0, da jede bitweise Operation in JavaScript, um die Nummer zu einem 32-Bit-int zwingt, und mit 0 ODER-Verknüpfung den Wert darüber hinaus, dass sie nicht ändert:
>(-1/10000000)|0
0
>1234.56|0 // truncation
1234
>(2147483647+1)|0 // integer overflow
-2147483648
Wie wäre es mit dem Parameter raddix? Es produziert das gleiche Ergebnis? –
, weil 1/10000000 1e-7 zurückgibt, während 1/1000000 0.000001 zurückgibt. es unterscheidet sich wie parseInt tatsächlich funktioniert ... – FrEaKmAn
@TimVermaelen dasselbe Ergebnis. –