SetFormat

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

SetFormat, INTEGER, D|H
SetFormat,FLOAT, TotalWidth.DecimalPlaces[e|E]

Parameters

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

Remarks

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

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

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

変数が数値/整数値/小数値であるかを判定するには、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 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