VAL

文字列を数値に変換します。戻り値の型はDouble(倍精度浮動小数点値)。Doubleの範囲外(オーバーフロー)だとINFとしくは-INFが返ります。INFとはINFinity(無限大、∞)のことです。

構文
  1. Double = VAL( 文字列, [エラー値] )
引数
文字列
数値に変える文字列
エラー値
数値に変換できない場合に返す値
戻り値
数値

数値変換できない場合はエラー値を、デフォルトでは ERR_VALUE (-999999)を返す

指数表記

UWSCでは非常に大きい値や小さい値を指数表記(Exponentialエクスポネンシャル Notationノーテーション)で表すことができます。

\[(仮数部)E(指数部)\] \[(仮数部)E(指数部) = (仮数部) \times 10 ^{(指数部)}\]

例えばアボガドロ定数はEを使った指数表記では以下のようになります。

\[6.02214076 \times 10^{23} = 6.02214076E+23\]

指数がプラスの場合「E+」の「+」は省略可能です。

\[6.02214076E+23 = 6.02214076E23\]

指数部がマイナスのときは以下のようになります。

\[1.0E-n = 1.0 \times 10^{-n} = 1.0 \times \frac{1}{10^{n}}\]

UWSCではVAL関数の引数に文字列型で指定します。戻り値は計算に使えるDouble型です。

PRINT VAL("6.02214076E+23")   // プラス記号あり
PRINT VAL("6.02214076E23")    // プラス記号なし

コメントに記載のないものはすべてDouble型を返します。

PRINT VAL(1)             // 1
PRINT VAL(-25)           // -25
PRINT VAL("23")          // 23
PRINT VAL(2.00)          // 2
PRINT VAL("0056")        // 56
PRINT VAL("08.64")       // 8.64
PRINT VAL("2.3")      // 2.3
PRINT VAL("5.66")       // 5.66 
PRINT VAL("3.")          // 3
PRINT VAL(".3")          // 0.3
PRINT VAL("1E309")       // INF
PRINT VAL("-1E309")      // -INF 
PRINT "-----"

PRINT VAL("Ⅰ")            // -999999(Integer)
PRINT VAL("壱")            // -999999(Integer)
PRINT VAL("abc", 0)        // 0(Double)
PRINT VAL("abc", TRUE)     // True(Boolean)
PRINT VAL("abc", FALSE)    // False(Boolean)
PRINT VAL("abc", "?")      // ?(UString)
PRINT VAL("abc", "エラー") // エラー(UString)
結果
1
-25
23
2
56
8.64
2.3
5.66
3
0.3
INF
-INF
-----
-999999
-999999
0
True
False
?
エラー

プログラム実行例

指数表記の値を数値表記にする

\[1.25\rm{E}+6=1.25 \times 10^{6}\]
PRINT VAL("1.25E+6")
    (1)
結果
1250000

指数表記の値の計算

PRINT VAL("1E15") - 1
PRINT VAL("1E15") + VAL("1.5E16")
    (1)
結果
999999999999999
1.6E16

オフライン作業取得

DIM WshShell = CREATEOLEOBJ("WScript.Shell")

TRY
	// Ver11以上
	DIM version = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\svcVersion")
EXCEPT
	// Ver10以下
	version = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Version")
ENDTRY

IFB VAL(TOKEN(".", version)) <= 10 THEN
	// Ver10以下
	DIM IE = CREATEOLEOBJ("InternetExplorer.Application")
	IE.Visible = TRUE
	IFB IE.Offilne = TRUE THEN
		PRINT "オフライン作業中です"
	ELSE
		PRINT "オフライン作業中ではありません"
	ENDIF
	IE.Quit
ELSE
	// Ver11以上
	PRINT "オフライン作業は利用できません"	
ENDIF
    (1,13) (5,8) (11) (11) (14) (15)
  1. IE.Quit(20)
結果
オフライン作業は利用できません

MSGBOXの種別の数値から表示されるボタンを取得

HASHTBL type

type[BTN_YES] = "はい"
type[BTN_NO] = "いいえ"
type[BTN_OK] = "OK"
type[BTN_CANCEL] = "キャンセル"
type[BTN_ABORT] = "中止"
type[BTN_RETRY] = "再試行"
type[BTN_IGNORE] = "無視"

DIM num = INPUT("数値を入力してください。")

IF VAL(num) = ERR_VALUE THEN EXIT

PRINT num
PRINT "----------"

FOR n = 0 TO 6
	IF (num AND POWER(2, n)) <> 0 THEN PRINT type[POWER(2, n)]
NEXT

MSGBOX("以下のボタンが表示されます", num)
    (11) (13) (19) (22)
結果
22
----------
キャンセル
はい
中止