SetFormat

提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 | キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル | レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト

SetFormat[編集]

数値演算の結果の整数値・小数値の文字列表現フォーマットを設定。

SetFormat, Integer[Fast], D|H
SetFormat, Float[Fast], TotalWidth.DecimalPlaces[e|E]

Parameters[編集]

引数名 説明
NumberType Integer[Fast](整数値)、 Float[Fast](小数値)のいずれか。
Fastモードは1.0.48以降でサポート。詳細はFastモードを参照。
D|H NumberTypeがINTEGERの場合の第二引数は、10進数形式にするには Dを指定。 0xで始まる16進数形式にするには Hを指定。
AHKL 16進数指定時に H とすると出力結果のA~Fの部分が大文字になる。h とすると小文字になる。
TotalWidth NumberTypeが FLOATの場合の場合の第二引数は、 TotalWidth.DecimalPlaces(ピリオド区切り)の形式で2つの数を指定。
TotalWidthは文字列表現の最小の文字数を指定。
結果の値の文字数がそのままではTotalWidthより少なくなってしまう場合、TotalWidthの指定の仕方によって以下のような形式で出力される。
もともとTotalWidthより文字数が多い場合、そのまま出力される。
TotalWidthがDecimalPlacesより小さい場合、常にそのまま出力される。
普通の数(1,2,...10...) 左側に半角スペースを詰めて右揃え(例: 3.333333)
数の前に 0をつける(01,02,...010...) 右側に 0を詰めて右揃え(例: 003.333333)
数の前に -をつける(-1,-2,...-10...) 右側に半角スペースを詰めて左揃え(例: 3.333333)
DecimalPlaces 小数点以下の桁数は、必ずDecimalPlacesで指定した桁数になる。(例: 0.250000)
桁数を超える場合は、四捨五入される。(例: 0.666667)
DecimalPlacesが 0の場合、小数点も表示されなくなる。(10進整数と同じになる)
e|E DecimalPlacesの後に eもしくは Eが付けられた場合、 1.01e+002のように、整数部1~9、小数部DecimalPlaces桁の浮動小数点表記で出力されるようになる。
例えば、 1.01e+0031.01*10^31010、 1.01e-0021.01*10^(-2)0.0101を表す。
この方式ならば、 0.000000000000001のような値でも、常に有効桁数DecimalPlaces+1桁で保持できる。
計算の入力においては、 101e+1 101.0e1 0.000101e+10のような表記も認識される。ただし、 101e1のように、指数部の符号と小数部を共に省略したものは認識されない。
大文字のEを指定した場合は、 1.01E+001のような出力形式になる。

Fastモード と Slowモード[編集]

IntegerFast, FloatFastともに1.0.48以降で利用が可能。 Fastが付かない従来のモードはSlowモードとなる。それ添えの利点・欠点は以下の通り。

利点 Fastモードではそれぞれの型の数値としてデータをキャッシュする。 実際に文字列として必要になる直前まで数値として扱うので、可能な限りの高速な演算が可能となっている。 一方、Slowでは演算毎に文字型に変換して格納するので演算が低速になる。
欠点 Fastモードでは、値を文字列として必要になる直前(例えばMsgBoxの出力として必要な時など)まで SetFormat で指定したフォーマットに変換するのを遅らせる。このため異なる数値フォーマット(例:小数の桁数が多かったり少なかったりなど)が、値の格納時に有効だと思われていたのに実際には適応されていなくて、最終的な出力結果が思いもしないものになっている可能性がある。現在の数値フォーマットを即時に適応させるには、HexValue.=""のように空文字列を最後に付与するなどの処置を行う。

従来のSlowモードの IntegerFloat がスクリプト内のどこかで記述されている場合、たとえ実行時にその行が処理されなかったとしても、数値のキャッシュは行われない。

Remarks[編集]

INTEGERの初期設定は D(10進数)、FLOATの初期設定は 0.6(小数点以下6桁表示、桁揃えなし)

組み込み変数A_FormatIntegerA_FormatFloatで整数・小数それぞれの現在の設定値を参照できる。

この設定の基本値は、スクリプトの最初のAuto-executeセクションで設定する。
ホットキーなどで新たに起動されたスレッドでは、設定は基本値に設定される。

変数が数値/整数値/小数値であるかを判定するには、if var is number/integer/floatコマンドを使用すればよい。

このコマンドを使用しても、すでに変数に入っている数値のフォーマットは変換されない。
変換するには、 0を足すなどの計算を行えばよい。

数字の桁揃えを行うには、 SetFormat,FLOAT,6.0などとしたうえで、 Var+=0.0のようにして小数値表現に変換すればよい。

Related[編集]

Assign expression (:=), EnvAdd, EnvSub, EnvMult, EnvDiv, AutoTrim, If var is [not] type

Example(s)[編集]

Var = 11.333333
SetFormat, float, 6.2
Var -= 1  ; Sets Var to be 10.33 with one leading space because the total width is 6.
SetFormat, float, 0.2
Var += 1  ; Sets Var to be 11.33 with no leading spaces.
SetFormat, float, 06.0
Var += 0  ; Sets Var to be  000012
SetFormat, integer, hex
Var += 0  ; Sets Var to be 0xc
SetFormat, integer, d