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)
HSPの演算処理は左方の型で決まることに注意が必要です。「文字」に「数値」を加算(+)したら、結果は文字列同士の結合です。減算(-)、乗算(*)、除算(/)の場合は、計算できないためHSPエラー21「サポートされない機能を選択しました」となります。
; 「100」という文字列 a = "100" ; 普通に足すと、文字「100」+数値「1」=文字「1001」 mes a + 1 ; int関数で数値化することで正しく演算できる mes int(a) + 1
; 「100」という文字 a = "100" ; 演算できないためすべてHSPエラー21 mes a - 1 mes a * 1 mes a / 1
「,」(コンマ)で区切られた数値を1つ1つ取り出して10倍にした数値を表示するサンプルスクリプト。getstr命令、strmid関数、strf関数、noteget命令などの取得した結果は文字列なので、整数値へと変換しないと問題が起こります。整数値を指定しなければならない命令や関数のパラメータに文字列を指定すると、HSPエラー6「パラメータの型が違います」となります。
; 文字列 data = "10,20,30,40,50" i = 0 repeat ; 「,」区切りで切り出す getstr value, data, i, ',' ; 文字がなくなったらループを抜ける if strsize = 0 : break i + strsize ; × 文字に10を掛けることはムリなのでHSPエラー21 // mes value * 10 ; × エラーにはならないが、文字同士の結合「文字+数値=文字」 // mes value + 10 ; ○ int関数で数値化 mes int(value) * 10 loop ; × 文字列は指定できないパラメータなのでHSPエラー6 // pos value mes "done!"