Num
Num ( expression {; separator} ) : Real
引数 | 型 | 説明 | |
---|---|---|---|
expression | Text, Boolean, Integer | → | 数値型を返したい文字列、または 0または1を返したいブール、または 数値式 |
separator | Text | → | 小数区切り |
戻り値 | Real | ← | 式引数の数値型 |
説明
Num コマンドは、expressionに渡した文字列、ブール、または数値式の数値型を返します。文字型の式を評価するために、オプションのseparator引数で小数区切り文字を指定できます。
文字列式
expressionが1つ以上のアルファベット文字からのみ構成される場合、Num は0を返します。expressionがアルファベット文字と数字を含む場合、Num はアルファベット文字を無視します。従って、Num は文字列"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”を含んでいる場合、MacとWindowsで異なる結果になる可能性があるので注意してください。
separator引数を使用して、expressionを評価するために使用するカスタム小数区切りを指定できます。評価される文字列が、システム演算子とは異なる小数区切りで表現されていると、コマンドは誤った結果を返します。この場合、separator引数を使用して正しい評価を取得できます。この引数が渡された場合、コマンドはこのシステム小数区切りを無視します。1つ以上の文字を渡すことができます。
Note: GET SYSTEM FORMAT コマンドを使用して、カレント小数区切りおよびその他の特定のシステム引数を調べることができます。
ブール式
ブール式を渡した場合、Numは、式がTrueの場合1を返し、そうでなければ0を返します。
数値式
数値式をexpression引数に渡した場合、Numはexpression引数に渡された値をそのまま返します。これはポインタを使用するような汎用プログラミングで有効です。
未定義の式
expression 引数の式が未定義と評価される場合、コマンドは0を返します。これは式の結果(例:オブジェクト属性など)が未定義であっても数値として返されることを期待する場合などに有効です。
例題 1
文字引数を渡した場合のNumの使用例を次に示します。結果を変数vResultに代入します。コメントは、変数vResultに代入される値についての説明です:
vResult:=Num("ABCD") // vResultは0
vResult:=Num("A1B2C3") // vResultは123
vResult:=Num("123") // vResultは123
vResult:=Num("123.4") // vResultは123.4
vResult:=Num("-123") // vResultは -123
vResult:=Num("-123e2") // vResultは -12300
例題 2
以下の例は、 [Client]Debtを$1000と比較します。この比較に適用されるNumコマンドからは1または0が返されます。文字列に1や0を乗算するとその文字または空の文字が返されます。結果、[Client]Riskには"良い"または"悪い"が返されます。
//顧客の負債額が、1000より小さいは「良い」
//顧客の節額が、1000以上は「悪い」
[Client]Risk:=("良い"*Num([Client]Debt<1000))+("悪い"*Num([Client]Debt>=1000))
例題 3
この例は現在の小数区切りにより取得される結果を比較します:
$thestring:="33,333.33"
$thenum:=Num($thestring)
//フランスのシステムでは、$thenumは、デフォルトで33,33333と等しい。
$thenum:=Num($thestring;".")
//システムに関係なく、$thenum は正確に評価されます。
//例えば、フランスのシステムでも 33 333,33となります。