SetFormat

수학 연산으로 생산돈 정수와 부동 소수점 수의 형식을 설정합니다.

비추천: 이 명령어는 새 스크립트에 사용을 추천하지 않습니다. 대신 Format 기능을 사용하십시오.

SetFormat, NumberType, Format

매개변수

NumberType

반드시 다음 중 하나입니다: IntegerFast, FloatFast, Integer, 또는 Float (두 개의 빠른 모드는 [v1.0.48+]를 요구합니다; 논평 참조).

Format

NumberType Integer 또는 IntegerFast에 대하여, 십육진수는 H 또는 HEX를 지정하거나, 또는 십진수이면 D를 지정하십시오. 십육진수는 모두 접두사 0x로 시작합니다 (예, 0xFF). [AHK_L 42+]: 십육진 정수는 A-F 자리의 형식이 이 매개변수가 h이면 소문자이고 H이면 대문자입니다.

NumberType Float 또는 FloatFast에 대하여, TotalWidth.DecimalPlaces를 지정하십시오 (예, 0.6). [v1.0.46.11+]: 기호 "e"를 추가해 과학 표기법을 만들어 낼 수 있습니다; 예, 0.6e 또는 0.6E (대문자를 사용하면 각 숫자에 소문자가 아니라 대문자 E를 생산합니다). 주의: AutoHotkey 1.x에서, 과학적 표기법은 반드시 소수 점을 포함해야 합니다; 예, 1.0e1는 유효하지만 1e1는 유효하지 않습니다.

TotalWidth는 전형적으로 0입니다. 그 숫자에 빈 공간이 있거나 0으로 덧대면 안된다는 뜻입니다. 더 높은 값을 사용하면, 그 너비만큼 만들기 위해 숫자들은 스페이스나 0으로 덧대어집니다 (논평 참조).

DecimalPlaces는 보여줄 소수 점 자리의 갯수입니다. (반올림이 일어납니다). 비어 있거나 0이면, 소수점 부분도 소수점도 보여주지 않습니다. 즉, 부동 소수점 수의 결과는 정수로 화면에 보여줍니다. 시작 기본 값은 6입니다.

Padding: 만약 TotalWidth가 패딩을 야기할 만큼 높다면, 스페이스가 그 왼쪽에 추가됩니다; 즉, 각 숫자는 오른쪽으로 정렬됩니다. 대신에 왼쪽 정렬을 하려면, TotalWidth 앞에 마이너스 사인을 추가하십시오. 스페이스 대신에 0으로 덧대려면, TotalWidth 앞에 0을 추가하십시오 (예, 06.2).

빠른 모드 vs. 느린 모드

[v1.0.48+]: Integer 대신에 IntegerFast 그리고 Float 대신에 FloatFast를 사용할 수 있습니다.

느린 모드인 "Integer" 또는 "Float"가 스크립트 어디서든 사용된다면, SetFormat 줄이 전혀 실행되지 않더라도, 정수나 부동 소수점 수의 캐쉬는 (각각) 스크립트가 기동하는 순간 꺼집니다.

부동 소수점 형식

[v1.0.48+]: 부동 소수점 변수는 대략 내부적으로 15 자리의 정밀도를 가집니다. 단, SetFormat Float (즉, 느린 모드)가 스크립트에 존재하는 경우는 예외입니다. 이 경우 저장된 정밀도의 부동 소수점 수는 DecimalPlaces에 의하여 결정됩니다 (pre-1.0.48 버전과 같습니다). 다른 말로, 부동 소수점 수의 결과가 일단 변수 안에 저장되면, 여분의 정밀도는 소실됩니다. 그리고 SetFormat, Float, 0.15와 같은 것으로 다시 계산을 하지 않고는 다시 요청할 수 없습니다. 이런 정밀도의 손실을 피하려면, SetFormat Float을 스크립트에 사용하지 마십시오. 다시 말해, 대신 SetFormat FloatFast를 사용하십시오.

느린 모드이든 빠른 모드이든 상관 없이, 부동 소수점 수가 결과이고 변수는 텍스트 문자열로 변환되거나 보여질 때 DecimalPlaces로 내림됩니다. (예, MsgBox 또는 FileAppend). 완벽한 정밀도를 보려면, 다음 SetFormat, FloatFast, 0.15과 같이 사용하십시오.

부동 소수점 수를 정수로 변환하려면, Var:=Round(Var), Var:=Floor(Var), 또는 Var:=Ceil(Var)를 사용하십시오. 정수를 부동 소수점 서로 변환하려면, 0.0을 더하십시오 (예, Var+=0.0) 또는 다음 MyFloat:=Round(MyInteger, 1)처럼 사용하십시오.

내장 변수 A_FormatFloat에는 현재 부동 소수점 형식이 포함되어 있습니다 (예, 0.6).

정수 포맷

정수 결과는 보통 십육진수가 아니라 십진수로 보여줍니다. 십육진수로 전환하려면, SetFormat, IntegerFast, Hex를 사용하십시오. 이것은 도 정수를 십진수에서 십육진수로 (또는 그 반대로) 변화하는데에도 사용할 수 있습니다. 이 페이지 맨 아래에 예제에 보여줍니다.

스크립트에 지정된 기호 그대로의 정수는 십육진수 또는 십진수로 쓸 수 있습니다. 십육진 정수는 모두 접두사 0x로 시작합니다 (예, 0xA9). 숫치 값이 예상되는 곳이면 어디든 사용할 수 있습니다. 예를 들어, Sleep 0xFFSleep 255와 동등합니다. SetFormat으로 설정된 현재 정수의 형식에 상관이 없습니다.

AutoHotkey는 64-비트 부호있는 정수를 지원합니다. 그 범위는 -9223372036854775808 (-0x8000000000000000)부터 9223372036854775807 (0x7FFFFFFFFFFFFFFF) 까지입니다.

내장 변수 A_FormatInteger에 현재 정수 형식이 들어 있습니다 (H 또는 D).

총평

SetFormat이 스크립트에 사용되지 않으면, 정수는 기본값이 십진 형식이고, 부동 소수점 수는 기본값이 TotalWidth.DecimalPlaces = 0.6입니다. 새로 기동된 쓰레드는 모두 (예를 들어 핫키, 맞춤 메뉴 항목, 또는 타이머 서브루틴) 다음 기본 값을 가지고 새롭게 시작합니다; 그러나 이 기본값은 자동 실행 섹션 (스크립트의 상단)에서 SetFormat를 사용하여 바꿀 수 있습니다.

x=%y%와 같은 예전-스타일의 할당은 앞 뒤에 스페이스를 생략합니다 (즉, 패딩). 이를 피하려면, AutoTrim 또는 쌍점-등호 연산자를 사용하십시오 (예, x:=y).

"if var is number/integer/float"를 사용하면 변수에 수치 값이 들어 있는지 알아낼 수 있습니다.

부동 소수점 수 연산을 할 필요 없이 정수에 0 또는 스페이스를 덧대려면, 다음 예제를 따르십시오:

Var := "          " . Var     ; 따옴표 안에 10개의 스페이스가 들어 있습니다.  0으로 덧대려면, 스페이스를 0으로 교체하십시오.
Var := SubStr(Var, -9)  ; Var 안에 있는 숫자에 스페이스를 덧대 총 너비가 10 문자에 맞도록 만듭니다.
Var := SubStr("          " . Var, -9)  ; 위의 두 줄을 한 줄로 대신합니다.

Format(), Caching, Expression assignment (:=), EnvAdd, EnvSub, EnvMult, EnvDiv, AutoTrim, if var is type

예제

Demonstrates different usages.

Var := 11.333333
SetFormat, float, 6.2
Var -= 1  ; Var에 10.33을 설정합니다. 총 너비가 6이므로 앞에 스페이스가 하나 있습니다.
SetFormat, float, 0.2
Var += 1  ; Var에 11.33을 설정합니다. 앞에 스페이스가 없습니다.
SetFormat, float, 06.0
Var += 0  ; Var에 000011을 설정합니다.

; 십진 정수를 십육진 형식으로 변환합니다:
SetFormat, IntegerFast, hex
Var += 0  ; Var에 0xb를 설정합니다 (이전에 11이 들어 있었습니다).
Var .= ""  ; "빠른" 모드이기 때문에 필수입니다.
SetFormat, IntegerFast, d