練炭ブログ

萌え壁紙、Irvine、DMonkey、Proxomitron などの情報を扱ってます。

萌え壁紙 新着情報

コメントなし»

チュアブルソフト オフィシャルサイト
『アステリズム -Astraythem-』壁紙カレンダー 2012年4月

EX-ONE(エックスワン) Official Website
『FUTSUNO FANTASY -フツウノファンタジー-』Twitter 壁紙

DMonkey: Global.parseInt()

コメントなし»

dmonkeydoc.html より。

parseInt(値) ... 値を整数値に変換します。返値は整数値。

参考:parseInt - MDN

JavaScript では値はまず文字列化してから解析されますが、DMonkey では文字列化されず型ごとに変換アルゴリズムが適用されます。

基数を指定する第二引数は渡せません。

parseInt (整数) → そのまま

parseInt (小数) → 小数部を四捨五入 (round)
parseInt (-1.5) → -2
# JavaScript では parseInt (-1.5) → -1

parseInt (true) → 1
parseInt (false) → 0

parseInt () → undefined

parseInt (NaN) → NaN
parseInt (null) → NaN

var Infinity = Number.POSITIVE_INFINITY;
var undefined = (function () {}) ();

parseInt (Infinity) → NaN
parseInt (undefined) → NaN

文字列は、DMonkey の内部で Delphi の StrToIntDef 関数を呼び出しています(デフォルト値 0)。

/^ *\d+$/ → 10進数(0 または正数)
/^ *+\d+$/ → 10進数(0 または正数)
/^ *-\d+$/ → 10進数(0 または負数)

/^ *[-+]?(\d+\.?|\d*\.\d+) *$/ → 0

/^ *\d+(\.\d*)?e\d* *$/i → 0

/^ *$[0-9a-f]+$/i → 16進数
/^ *0x[0-9a-f]+$/i → 16進数

それ以外 → NaN

ややこしい動作をするので正規表現にしてみましたが、適当に入れてみたパターンから逆算しただけなので間違いがあるかも知れません。