Last Update : 2007/10/xx
実数値(小数)や文字列数値を整数値に変換する関数です。関数名の由来は、「integer」(整数)から。
HSP2では命令形式で提供されてきましたが、HSP3では関数形式に変更されています。下はその違いです。HSP2ではint命令の第1パラメータに変換したい整数値を指定することで、そのまま変換された数値が返りますが、HSP3では関数そのものが整数値を返します。
; HSP2の場合 x = "1" int x mes x
; HSP3の場合 x = "1" y = int(x) mes y ; つまりは mes int(x)
その他の機能として、int関数を使って16進数文字列を10進数に変換するテクニック。(→ HSP Tips : 16進数を10進数に変換)
int関数を使った簡単なサンプルスクリプト。HSP3から関数形式に変更されたことで、int関数をmes命令に直接指定することができます。
; 実数の場合は「小数点以下切り捨て」処理 a = 3.14 mes int(a) b = -3.14 mes int(b) c = 5.7 mes int(c)
; 「100」という文字 a = "100" ; 普通に足すと、文字「100」+文字「1」=文字「1001」 ; 左側の型で決まる。([文字](+−*/などの演算子)[数値]=[文字]) mes a + 1 ; int関数で数値化した場合 mes int(a) + 1
「,」(コンマ)で区切られた数値を1つ1つ取り出して10倍にした数値を表示するサンプルスクリプト。getstr命令、strmid関数、strf関数など、結果として返るものは文字列なので、数値に変換しないと計算できません。
; 文字列 data = "10,20,30,40,50" i = 0 repeat ; 「,」区切りで切り出す getstr value, data, i, ',' ; 文字がなくなったらループを抜ける if strsize = 0 : break i + strsize ; × 文字に10を掛けることはムリなのでシステムエラー // mes value * 10 ; × エラーにはなりませんが、これは「文字+数値=文字」 // mes value + 10 ; ○ int関数で数値化 mes int(value) * 10 loop mes "done!"