Num
Num ( expression {; separator} ) : Real
Num ( expression ; base ) : Real
引数 | 型 | 説明 | |
---|---|---|---|
式 | Text, Boolean, Integer | → | 数値形式を返したい文字列、あるいは0か1を返したいブール値、あるいは数値式 |
separator | Text | → | 小数点記号 |
base | Integer | → | 基数を表す2から36までの値 |
戻り値 | Real | ← | expression 引数の数値形式 |
履歴
リリース | 内容 |
---|---|
21 | base 引数のサポート |
説明
Num コマンドは、expression に渡した文字列、ブール、または数値式の数値型を返します。
expression 引数が文字列型だった場合、separator 引数またはbase 引数を使用することができます(以下参照)。
文字列式
Num コマンドに対して文字列型の expression 引数を渡した場合、2つのシンタックスが利用可能です:
- Num(string{;separator})
- Num(string;base)
Num(string{;separator})
expression が1つ以上のアルファベット文字からのみ構成される場合、Num は0を返します。 expression がアルファベット文字と数字を含む場合、このコマンドはアルファベット文字を無視します。 従って、このコマンドは文字列"a1b2c3" を数値123 に変換します。
Num が特別に扱う3つの指定された文字があります。(separator 引数が渡されていない場合)システムで定義された小数区切り文字、ハイフン“-” および “e” あるいは “E” です。 これらの文字は、数値表現のフォーマット文字として解釈されます。
- 小数区切りは小数点の位置として解釈され、数値文字列に埋め込まれていなければなりません。 デフォルトでコマンドは、オペレーティングシステムに設定された小数区切りを使用します。 separator 引数を使用して、この文字を変更できます(以下参照)。
- ハイフンは、数値や指数が負であることを意味します。 ハイフンは負の数字文字列の前、または指数の場合“e”の後ろになければなりません。 “e”をのぞきハイフンが数字の間にあると、それ以降の文字列は無視されます。 例えば、
Num("123-456")
は123に、しかしNum("-9")
は-9になります。 - eまたはEがあると、その右側の数字をすべて指数として解釈します。 eは数字の文字列の間に置かなければなりません。
Num("123e–2")
は 1.23 になります。
文字列に複数の“e”を含んでいる場合、 macOS とWindows で異なる結果になる可能性があるので注意してください。
separator 引数
separator 引数は、expression を評価するために使用するカスタム小数区切りを指定します。 評価される文字列が、システム演算子とは異なる小数区切りで表現されていると、コマンドは誤った結果を返します。 この場合、separator 引数を使用して正しい評価を取得できます。 この引数が渡された場合、コマンドはこのシステム小数区切りを無視します。 1つ以上の文字を渡すことができます。
GET SYSTEM FORMAT
コマンドを使用して、カレント小数区切りおよびその他の特定のシステム引数を調べることができます。
Num(string;base)
base 引数(整数値) を使用すると、特定のモードがトリガーされます。このモードではexpression 内で文字列として表される数値の基数(底)を指定します。 具体的には、このシンタックスを使用することで16進数の文字列を数値に変換することができます。
base 引数には、expression 引数の基数の数字を渡します。 ここには2 から36 までの任意の整数値を渡すことができます。
base 引数に0 を渡した場合、コマンドはexpression 引数の値に応じて基数を決定します。 expression の値が"0x" で始まる場合、16 進数が使用されます。 それ以外の場合、10 進数が使用されます。
expression 引数が小数に評価された場合、整数部分のみが変換されます。
- このシンタックスは
parseInt
EcmaScript 仕様 に厳密に従います。 - base=10 のシンタックスを使用した場合、 base 引数を使用しなかったシンタックスと全く同じ結果は返しません。 例えば、ECMAScript 仕様に従えば、底として所属しない文字はセパレータとしてみなされます(例題を参照してください)。
ブール式
ブール式を渡した場合、Num は、式がTrueの場合1を返し、そうでなければ0 (ゼロ)を返します。
数値式
数値式をexpression 引数に渡した場合、Num はexpression 引数に渡された値をそのまま返します。 これは具体的にはポインタを使用するような汎用プログラミングで有効です。
未定義式
expression 引数が未定義と評価された場合、コマンドは0(ゼロ) を返します。 これは、式(例: オブジェクトの属性)の結果が、未定義であっても数値として返されることを期待するような場合に便利です。
例題 1
以下は単一の文字引数を渡した場合のNum の振る舞いについて示したものです:
$result:=Num("ABCD") // 0
$result:=Num("A1B2C3") // 123
$result:=Num("123") // 123
$result:=Num("123.4") // 123.4
$result:=Num("–123") // –123
$result:=Num("–123e2") // –12300
例題 2
以下の例は、 [Client]Debt と $1000 とを比較します。 この比較に適用されるNum コマンドからは1 または0 が返されます。 文字列に1 や0 を乗算するとその文字または空の文字が返されます。 結果として、 [Client]Risk には"Good"または"Bad"が返されます:
// 顧客の負債額が、1000より小さいは「Good」
// 顧客の負債額が、1000以上は「Bad」
[Client]Risk:=("Good"*Num([Client]Debt<1000))+("Bad"*Num([Client]Debt>=1000))
例題 3
この例は"現在の"小数区切りにより取得される結果を比較します:
$thestring:="33,333.33"
$thenum:=Num($thestring)
// フランスのシステムでは、$thenum は、デフォルトで33,33333と等しい。
$thenum:=Num($thestring;".")
// システムに関係なく、$thenum は正確に評価されます。
// 例えば、フランスのシステムでも 33 333.33となります。
例題 4
この例題ではbase シンタックスの使用法について紹介します:
$result:=Num("ff";16) // 255 (小文字の16進数)
$result:=Num("0xFF") // 0
$result:=Num("0xFF";16) // 255
$result:=Num("2";2) // 0
$result:=Num("10.3";16) // 16
$result:=Num("123.20") // 12320 (標準の10進数シンタックス)
$result:=Num("123.20"; 10) // 123 (明示的に10進数を指定)
参照
プロパティ
コマンド番号 | 11 |
スレッドセーフ | ✓ |