Der as
Operator ist eine direkte Besetzung , während int()
implizit das Stockwerk der Nummer findet (beachten Sie, dass es tatsächlich nicht Math.floor
jedoch ruft). Die Adobe docs for as
sagt, es überprüft, dass der "erste Operand ein Mitglied des Datentyps ist, der durch den zweiten Operanden angegeben wird." Da 9,59 nicht als int darstellbar ist, schlägt die as
Umwandlung fehl und gibt 0 zurück, int()
findet zuerst die Etage der Zahl und dann wird sie nach int umgewandelt.
Sie könnten Math.floor(blah) as int
tun, und es sollte funktionieren, obwohl es langsamer wäre. Angenommen, Sie möchten eine abgerundete Int, Math.round(blah) as int
wäre korrekter, aber int(blah + .5)
wäre am schnellsten und Runde richtig.
Nun ... was 2 Ergebnisse bekommen Sie? –
9.59 ... ohne irgendeine Umwandlung nach int, 9 mit der zweiten und 0 für die erste. – Archagon
Ich habe noch mehr getestet, und anscheinend (9 als int), (9.5 als Zahl) und (int (9.5)) geben die korrekten Ergebnisse, aber (9.5 als int) ergibt null. Warum sollte das der Fall sein? – Archagon