본문 바로가기

AUTOHOTKEY/레퍼런스

SetFormat 수치 연산의 결과의 정수치·소수치의 문자열 표현 포맷을 설정

SetFormat

수치 연산의 결과의 정수치·소수치의 문자열 표현 포맷을 설정

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

Parameters


인수명 설명
NumberType 「INTEGER」(정수치), 「FLOAT」(소수치)의 어느 쪽인지.
D|H NumberType하지만INTEGER의 경우의 제2 인수는,10진수 형식으로 하려면 「D」(을)를 지정.「0x」(으)로 시작된다16진수 형식으로 하려면 「H」(을)를 지정.
에 사용.
TotalWidth NumberType하지만 「FLOAT」의 경우의 경우의 제2 인수는, 「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_FormatInteger, A_FormatFloat그리고 정수·소수 각각의 현재의 설정치를 참조할 수 있다.

이 설정의 기본치는, 스크립트의 최초의 AutoExecute섹션그리고 설정한다.
hot key등에서 새롭게 기동되었다 스렛드그럼, 설정은 기본치로 설정된다.

변수가 수치/정수치/소수치인지를 판정하려면 , 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