VB6・VBA関数メモ:Sgn関数

Sgn関数についてメモしておきます。
この関数は数値がプラスかマイナスかを判定する際に使用します。
ただ、等号で同じことができるのであまり使う人はいない気がします。


概要

Sgn(Number)
機能 指定した数値の符号(+-)を返す
引数 Number 指定の数値 Variant型
戻り値 正の場合 1
0の場合 0
負の場合-1
Variant型(Integer型)


使用例

説明 記述例 出力
指定値の符号を取得 Sgn(123) 1
Sgn(0) 0
Sgn(-123) -1


動作検証

説明 記述例 出力
小数を指定可能 Sgn(-1.23) -1
文字列の数値を指定可能 Sgn("-123") -1
文字列の数値(16進数)を指定可能 Sgn("&H123") 1
文字列の数値(8進数)を指定可能 Sgn("&O123") 1
文字列の数値(指数表記)を指定可能 Sgn("-123E-2") 1
Nullを指定するとエラー Sgn(Null) エラー
Double型の最小値(-1.79769313486231E308)を
下回るとエラー
Sgn(-1.79769313486232E+308) エラー
Double型の最大値(1.79769313486232E307)を
上回るとエラー
Sgn(1.79769313486232E308) エラー
なぜかDate型を指定すると1を返す
(しかしString型の場合はエラー)
Sgn(#2011/12/13#) 1
Sgn("2011/12/13") エラー


応用例

説明 記述例 出力
正、0、負で処理を分岐
Dim datas, i
datas = Array(-123, 0, 123)

For i = LBound(datas) To UBound(datas)
    
    Select Case Sgn(datas(i))
    Case 1: Debug.Print ("正")
    Case 0: Debug.Print ("零")
    Case -1: Debug.Print ("負")
    End Select
    
Next i
"負"
"零"
"正"
正、0、負で処理を分岐
(Sgn関数を使わない場合)
Dim datas, i
datas = Array(-123, 0, 123)

For i = LBound(datas) To UBound(datas)
    
    Select Case datas(i)
    Case Is > 0: Debug.Print ("正")
    Case 0: Debug.Print ("零")
    Case Is < 0: Debug.Print ("負")
    End Select
    
Next i
"負"
"零"
"正"


コメント
コメントする








    
この記事のトラックバックURL
トラックバック