命令講座 <int関数>

Last Update : 2007/10/xx

int関数 (HSP 3.x)

 実数値(小数)や文字列数値を整数値に変換する関数です。関数名の由来は、「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!"

^

Copyright © 2005-2008 HSP情報サイト Let's HSP!. All rights reserved.