모듈:수학
Module| 이 Lua 모듈은 전체 페이지의 약 3%인 1,550,000개 이상의 페이지에서 사용됩니다. 큰 중단과 서버 로드를 방지하려면 모듈의 /sandbox 또는 /testcase 하위 페이지 또는 자체 모듈 샌드박스에서 변경 사항을 테스트해야 합니다.테스트된 변경 사항은 한 번의 편집으로 이 페이지에 추가할 수 있습니다.변경사항을 구현하기 전에 대화 페이지에서 변경사항에 대해 논의하는 것을 고려합니다. |
| 이 모듈은 페이지 보호 대상입니다.매우 많은 페이지에서 사용 중이거나 매우 자주 교체되는 가시성이 높은 모듈입니다.파괴 행위나 실수는 많은 페이지에 영향을 미치고 사소한 편집도 서버에 상당한 부하를 줄 수 있으므로 편집으로부터 보호됩니다. |
이 모듈은 여러 가지 수학적 기능을 제공합니다.이러한 기능은 #invoke 또는 다른 Lua 모듈에서 사용할 수 있습니다.
다른 Lua 모듈에서 사용
일반 Wiki 페이지에서 모듈을 사용하려면 특별한 준비가 필요하지 않습니다.다른 Lua 모듈에서 모듈을 사용하는 경우 먼저 다음과 같이 로드해야 합니다.
현지의 음. = 요구하다('모듈:수학') (그mmvariable은 Module Math를 나타냅니다. 원하는 경우 더 설명적인 것을 선택할 수 있습니다.)
모듈의 대부분의 기능에는 Lua 버전과 #invoke 버전이 있습니다.다른 Lua 모듈에서 #invoke 기능을 사용할 수 있지만 Lua 기능을 사용하면 Lua 프레임 개체에 액세스할 필요가 없다는 장점이 있습니다.Lua 함수는 다음과 같습니다._반면에 #dll 함수는 그렇지 않습니다.
난수의
{{#math random}{#math random}{#math random max_value}{#math random min_value}{#math random max_value} 음.._지루한() 음.._지루한(max_value) 음.._지루한(min_value, max_value) 난수를 생성합니다.
- 인수를 지정하지 않으면 생성된 숫자가 0보다 크거나 같고 1보다 작습니다.
- 하나의 인수가 제공되면 생성된 숫자는 1과 해당 인수 사이의 정수입니다.인수는 양의 정수여야 합니다.
- 두 개의 인수가 제공되는 경우 생성되는 숫자는 첫 번째 인수와 두 번째 인수 사이의 정수입니다.두 인수는 모두 정수여야 하지만 음수일 수 있습니다.
이32 기능은 -2보다 작은 숫자와 2 -1보다32 큰 숫자에서는 제대로 작동하지 않습니다.이 범위를 벗어나는 숫자를 사용해야 하는 경우 모듈을 사용을 권장합니다.무작위로.
주문
{{#computer:수학 순서 n}} 음.._순서(n) 숫자의 크기 순서를 결정합니다.
정확
{{#math precision n}}{#math precision x=n}} 음.._지루한(number_string) 숫자의 정밀도를 결정합니다.예를 들어, "4"의 경우 "0"을 반환하고, "4.567"의 경우 "3"을 반환하며, "100"의 경우 "-2"를 반환합니다.
함수는 숫자의 문자열 표현을 구문 분석하고 숫자가 E 표기법을 사용하는지 여부를 탐지합니다.이러한 이유로 Lua에서 호출할 때 매우 큰 숫자 또는 매우 정확한 숫자를 문자열로 직접 입력해야 정확한 결과를 얻을 수 있습니다.숫자로 입력된 경우 Lua 인터프리터가 E 표기법으로 변경하고 이 함수는 원래 숫자가 아닌 E 표기법의 정밀도를 반환합니다.#invoke의 모든 입력은 문자열 형식이므로 #invoke에서 번호를 호출해도 문제가 없습니다.
맥스.
{{#mathmax v1 v2 v3 ...}} 음.._max(v1, v2, v3, ...) 지정한 값에서 최대값을 반환합니다.숫자로 변환할 수 없는 값은 무시됩니다.
중앙값
{{#mathmedian v1 v2 v3...}} 음.._지루한(v1, v2, v3, ...) 지정한 값에서 중위수 값을 반환합니다.숫자로 변환할 수 없는 값은 무시됩니다.
분
{{#mathmin v1 v2 v3 ...}} 음.._min(v1, v2, v3, ...) 지정한 값에서 최소값을 반환합니다.숫자로 변환할 수 없는 값은 무시됩니다.
합
{{#dll:math sum v1 v2 v3 ...}} 음.._합(v1, v2, v3, ...) 지정한 값의 합계를 반환합니다.숫자로 변환할 수 없는 값은 무시됩니다.
평균
{{#beta:수학 평균 v1 v2 v3 ...}} 음.._평균의(v1, v2, v3, ...) 지정된 값의 평균을 반환합니다. 더 정확하게는 반환되는 값이 산술 평균입니다.숫자로 변환할 수 없는 값은 무시됩니다.
둥그런
{{#precision:수학 라운드 값 정밀도}{#precision:수학 라운드 값 정밀도=값 정밀도}} 음.._원형의(가치, 정확) 지정된 정밀도로 숫자를 반올림합니다.
참고: 2019년 10월 현재 일부 반올림된 숫자 표시에 버그가 있습니다."1.02"와 같이 "n.0"으로 반올림하는 숫자를 숫자의 10분의 1(예: r=1), 이 함수는 "1.0"을 표시해야 하지만 예기치 않게 "1"을 표시합니다.사용 precision_format=매개 변수 대신 사용합니다.
로그 10
{{#math log10 x}}: 수학 로그 음.._log10(x) 돌아온다log10(x)10을 사용한 x의 로그
모드
{{#math:math mod x y}} 음.._모드(x, y) 얻다x 모듈로 y또는 그 후의 나머지x에 의해 분할되었습니다.y이 값은 최대 2개의53 정수에 대해 정확합니다. 정수가 클수록 Lua의 모듈로 연산자가 잘못된 값을 반환할 수 있습니다.이 함수는 반환을 통해 이 문제를 처리합니다.0루아의 모듈로 연산자에 의해 주어진 모듈로가 0보다 작거나 큰 경우y.
gcd
{{#dll:math gcd v1 v2 ...}} 음.._gcd(v1, v2, ...) 지정한 값의 최대 공약수를 찾습니다.숫자로 변환할 수 없는 값은 무시됩니다.
precision_format
{{#precision:산술정밀_형식값_문자열정밀} 음.._filename_format(value_string, 정확) 원래 {Rnd}에 사용된 규칙에 따라 숫자를 지정된 정밀도 및 형식으로 반올림합니다.출력이 문자열입니다.
매개 변수precision소수점 뒤의 정수 자릿수여야 합니다.음수 값은 허용됩니다.정수가 아닌 값은 예상치 못한 결과를 제공합니다.입력 정밀도보다 큰 양의 값은 제로 패딩을 추가하며, 입력 순서보다 큰 음의 값은 모든 숫자를 사용할 수 있습니다.
8,765.567을 포맷하면 다음을 얻을 수 있습니다.
precision | 결과 |
|---|---|
| 2 | 8,765.57 |
| -2 | 8,800 |
| 6 | 8,765.567000 |
| -6 | 0 |
| 2.5 | 8,765.5680426633 |
| -2.5 | 8,854.3774484715 |
나누다
{{#선택사항:수학 나눗셈 x y 라운드 = 정밀도=}} 음.._지루한(x, y, 둥그런, 정확) x를 y로 나눕니다.
- 숫자가 아닐 경우 반환됩니다.
- 그렇지 않으면 x가 숫자가 아니면 반환됩니다.
- 반올림이 참이면("예", #invoke) 결과에 소수점이 없습니다.
- 정밀도는 결과의 정밀도 자릿수를 나타냅니다.
인수 중 하나에 HTML 태그가 포함되어 있으면 변경되지 않고 반환되므로 분할 함수에 대한 인수 계산 시 오류가 호출 템플릿으로 전파될 수 있습니다.
클린 번호
현지의 번호, number_string = 음.._cleanNumber(number_string) 다른 Lua 모듈에서는 호출할 수 있지만 #invoke에서는 호출할 수 없는 도우미 기능입니다.문자열 또는 숫자 값을 입력으로 사용하며, 값을 숫자로 변환할 수 있는 경우 cleanNumber는 숫자와 숫자 문자열을 반환합니다.값을 숫자로 변환할 수 없는 경우 cleanNumber가 반환됩니다.nil, nil.
참고 항목
--[[ 이 모듈은 여러 가지 기본적인 수학적 연산을 제공합니다. ]] 현지의 예 아니오, args를 얻다 게으르게 초기화된. 현지의 p = {} #invoke에서 반환할 기능과 다른 Lua 모듈에서 사용할 수 있도록 하는 기능을 보유합니다. 현지의 싼다 = {} #invoke의 인수를 처리하는 래퍼 함수를 보유합니다.이들은 #invoke에 대한 함수와 Lua에 대한 함수 사이의 중간 역할을 합니다. --[[ 중복 코드를 방지하는 데 사용되는 도우미 기능입니다. ]] 현지의 기능. 잘못한(메시지) 위키텍스트 오류 메시지를 생성합니다. 돌아가다 mw.ustring.서식을('<strong class="오류">포맷 오류: %s</strong>', 메시지) 끝. 현지의 기능. 압축 풀기 번호아그스(논병아리) 숫자 키로 지정된 인수의 언팩 목록을 반환합니다. 현지의 리트 = {} 위해서 k, v 에 쌍들(논병아리) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 한다면 유형(k) == '숫자' 그리고나서 표.삽입(리트, v) 끝. 끝. 돌아가다 짐을 풀다(리트) 끝. 현지의 기능. makeArgArray(...) nil을 포함할 수 있는 인수 목록에서 인수 배열을 만듭니다. 현지의 논병아리 = {...} 인수 테이블입니다.nil 또는 숫자가 아닌 값이 포함될 수 있으므로 ipairs를 사용할 수 없습니다. 현지의 숫자들 = {} 유효한 숫자 인수의 수를 저장합니다. 현지의 리트 = {} 위해서 k, v 에 쌍들(논병아리) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 v = p._cleanNumber(v) 한다면 v 그리고나서 숫자들[#숫자들 + 1] = k 논병아리[k] = v 끝. 끝. 테이블. 테이블.(숫자들) 위해서 i, 번호 에 짝을 짓다(숫자들) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 리트[#리트 + 1] = 논병아리[번호] 끝. 돌아가다 리트 끝. 현지의 기능. 접이식의(펑크, ...) 제공된 모든 인수에 함수를 사용하고 결과를 반환합니다.함수는 두 개의 숫자를 매개 변수로 사용해야 합니다. 숫자를 출력으로 반환해야 합니다.그런 다음 이 번호는 다음 함수 호출에 입력으로 제공됩니다. 현지의 밸브 = makeArgArray(...) 현지의 세어보세요 = #밸브 유효한 인수 수입니다. 한다면 세어보세요 == 0 그리고나서 돌아가다 유효한 인수가 없으면 종료합니다. 그렇지 않으면 첫 번째 인수를 제거하면 오류가 발생합니다. 영의, 0 끝. 현지의 리트 = 테이블.제거(밸브, 1) 위해서 _, 발 에 짝을 짓다(밸브) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 리트 = 펑크(리트, 발) 끝. 돌아가다 리트, 세어보세요 끝. --[[ 값을 선택하여 인수를 접습니다(func는 현재 "지배적인" 값을 선택할 때 반환해야 합니다). ]] 현지의 기능. 이진 접기(펑크, ...) 현지의 가치 = 접이식의((기능.(a, b) 한다면 펑크(a, b) 그리고나서 돌아가다 a 또 다른 돌아가다 b 끝. 끝.), ...) 돌아가다 가치 끝. --[[ 난수의 난수 생성 용도: {{#선택사항:수학 랜덤 }} {{#선택사항:산술 랜덤 최대값 } {{#선택사항:산술 랜덤 최소값 최대값 } ]] 기능. 싼다.난수의(논병아리) 현지의 첫번째 = p._cleanNumber(논병아리[1]) 현지의 둘째 = p._cleanNumber(논병아리[2]) 돌아가다 p._지루한(첫번째, 둘째) 끝. 기능. p._지루한(첫번째, 둘째) 수학.채찍 종자(mw.위치.통계학.편집. + mw.위치.통계학.페이지들 + os.time() + 수학.플로어(os.clock() * 1000000000)) 명시적인 nil 매개 변수가 지정되면 math.dll이 오류를 발생시키므로 if 문을 사용하여 매개 변수를 확인해야 합니다. 한다면 첫번째 그리고. 둘째 그리고나서 한다면 첫번째 <= 둘째 그리고나서 math.dll은 첫 번째 숫자가 두 번째 숫자보다 큰 것을 허용하지 않습니다. 돌아가다 수학, 수학,수학(첫번째, 둘째) 끝. 그렇지 않으면 첫번째 그리고나서 돌아가다 수학, 수학,수학(첫번째) 또 다른 돌아가다 수학, 수학,수학() 끝. 끝. --[[ 주문 숫자의 크기 순서 결정 용도: {{#선택사항:산술 순서 값 }} ]] 기능. 싼다.주문(논병아리) 현지의 input_string = (논병아리[1] 또는 논병아리.x 또는 '0'); 현지의 input_number = p._cleanNumber(input_string); 한다면 input_number == 영의 그리고나서 돌아가다 잘못한('크기 입력 순서가 일치하지 않는 것으로 나타납니다.') 또 다른 돌아가다 p._순서(input_number) 끝. 끝. 기능. p._순서(x) 한다면 x == 0 그리고나서 돌아가다 0 끝. 돌아가다 수학.플로어(수학.로그 10(수학, 수학, 수학 시험답(x))) 끝. --[[ 정확 문자열 표현을 사용하여 숫자의 정밀도를 결정합니다. 용도: #선택:산술 정밀도 값 }} ]] 기능. 싼다.정확(논병아리) 현지의 input_string = (논병아리[1] 또는 논병아리.x 또는 '0'); 현지의 덫에 걸린 = 논병아리.체크_레귤러; 현지의 input_number; 한다면 것은 아니다. 예 아니오 그리고나서 예 아니오 = 요구하다('모듈:'예스노') 끝. 한다면 예 아니오(덫에 걸린, 진실의) 그리고나서 nil, false, "no", "n", "0" 및 기타 몇 가지 입력을 제외한 모든 입력에 대해 true를 반환합니다.[[모듈:[예스노]]. 현지의 포스 = 줄을 대다(input_string, '/', 1, 진실의); 한다면 포스 ~= 영의 그리고나서 한다면 줄을 대다(input_string, '/', 포스 + 1, 진실의) == 영의 그리고나서 현지의 분모 = string.sub(input_string, 포스+1, -1); 현지의 액면가 = 수에 달하여(분모); 한다면 액면가 ~= 영의 그리고나서 돌아가다 수학.로그 10(액면가); 끝. 끝. 끝. 끝. input_number, input_string = p._cleanNumber(input_string); 한다면 input_string == 영의 그리고나서 돌아가다 잘못한('잘못된 입력이 유효하지 않은 것으로 나타납니다.') 또 다른 돌아가다 p._지루한(input_string) 끝. 끝. 기능. p._지루한(x) 한다면 유형(x) == '숫자' 그리고나서 x = 끈으로 묶는(x) 끝. x = 현.상단(x) 현지의 십진의 = x:찾아내다('%.') 현지의 지수_pos = x:찾아내다('E') 현지의 결과 = 0; 한다면 지수_pos ~= 영의 그리고나서 현지의 지수의 = string.sub(x, 지수_pos + 1) x = string.sub(x, 1, 지수_pos - 1) 결과 = 결과 - 수에 달하여(지수의) 끝. 한다면 십진의 ~= 영의 그리고나서 결과 = 결과 + string.len(x) - 십진의 돌아가다 결과 끝. 현지의 포스 = string.len(x); 하는 동안에 x:바이트(포스) == string.바이트('0') 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 포스 = 포스 - 1 결과 = 결과 - 1 한다면 포스 <= 0 그리고나서 돌아가다 0 끝. 끝. 돌아가다 결과 끝. --[[ 맥스. 최대 인수를 찾습니다. 용도: {{#선택사항:산술 최대값1 값2 ... } 숫자를 계산하지 않는 모든 값은 무시됩니다. ]] 기능. 싼다.맥스.(논병아리) 돌아가다 p._max(압축 풀기 번호아그스(논병아리)) 끝. 기능. p._max(...) 현지의 max_value = 이진 접기((기능.(a, b) 돌아가다 a > b 끝.), ...) 한다면 max_value 그리고나서 돌아가다 max_value 끝. 끝. --[[ 중앙값 숫자 집합의 중위수 찾기 용도: {{#선택사항:수학 중위수 1번 숫자 2...}} OR {{#선택사항:산술 중위수 }} ]] 기능. 싼다.중앙값(논병아리) 돌아가다 p._지루한(압축 풀기 번호아그스(논병아리)) 끝. 기능. p._지루한(...) 현지의 밸브 = makeArgArray(...) 현지의 세어보세요 = #밸브 테이블. 테이블.(밸브) 한다면 세어보세요 == 0 그리고나서 돌아가다 0 끝. 한다면 p._모드(세어보세요, 2) == 0 그리고나서 돌아가다 (밸브[세어보세요/2] + 밸브[세어보세요/2+1])/2 또 다른 돌아가다 밸브[수학, 수학,수학(세어보세요/2)] 끝. 끝. --[[ 분 최소 인수를 찾습니다. 용도: {{#선택사항:산술 최소값1 값2 ... }} OR {{#선택사항:수학 최소값 }} 인수 없이 사용할 경우 상위 항목에서 입력을 가져옵니다. 프레임. 참고로 숫자를 계산하지 않는 모든 값은 무시됩니다. ]] 기능. 싼다.분(논병아리) 돌아가다 p._min(압축 풀기 번호아그스(논병아리)) 끝. 기능. p._min(...) 현지의 min_value = 이진 접기((기능.(a, b) 돌아가다 a < b 끝.), ...) 한다면 min_value 그리고나서 돌아가다 min_value 끝. 끝. --[[ 합 합계를 찾습니다. 용도: {{#선택사항:산술 합계 값1 값2 ... }} OR {{#선택사항:수학 합계 }} 숫자를 계산하지 않는 모든 값은 무시됩니다. ]] 기능. 싼다.합(논병아리) 돌아가다 p._합(압축 풀기 번호아그스(논병아리)) 끝. 기능. p._합(...) 현지의 합계, 세어보세요 = 접이식의((기능.(a, b) 돌아가다 a + b 끝.), ...) 한다면 것은 아니다. 합계 그리고나서 돌아가다 0 또 다른 돌아가다 합계 끝. 끝. --[[ 평균 평균을 찾습니다. 용도: {{#선택사항:산술 평균 값1 값2 ... }} OR {{#선택사항:수학 평균 }} 숫자를 계산하지 않는 모든 값은 무시됩니다. ]] 기능. 싼다.평균(논병아리) 돌아가다 p._평균의(압축 풀기 번호아그스(논병아리)) 끝. 기능. p._평균의(...) 현지의 합, 세어보세요 = 접이식의((기능.(a, b) 돌아가다 a + b 끝.), ...) 한다면 것은 아니다. 합 그리고나서 돌아가다 0 또 다른 돌아가다 합 / 세어보세요 끝. 끝. --[[ 둥그런 지정된 정밀도로 숫자를 반올림합니다. 용도: {{#선택사항:산술 라운드 값 정밀도 } --]] 기능. 싼다.둥그런(논병아리) 현지의 가치 = p._cleanNumber(논병아리[1] 또는 논병아리.가치 또는 0) 현지의 정확 = p._cleanNumber(논병아리[2] 또는 논병아리.정확 또는 0) 한다면 가치 == 영의 또는 정확 == 영의 그리고나서 돌아가다 잘못한('원형 입력이 아닌 것으로 나타납니다.') 또 다른 돌아가다 p._원형의(가치, 정확) 끝. 끝. 기능. p._원형의(가치, 정확) 현지의 축척을 다시 짜다 = 수학.pow(10, 정확 또는 0); 돌아가다 수학.플로어(가치 * 축척을 다시 짜다 + 0.5) / 축척을 다시 짜다; 끝. --[[ 로그 10 숫자의 로그(기본값 10)를 반환합니다. 용도: {{#선택사항:수학 로그 10 x }} ]] 기능. 싼다.로그 10(논병아리) 돌아가다 수학.로그 10(논병아리[1]) 끝. --[[ 모드 모듈로 연산자 구현 용도: {{#선택사항:산술 modx y}} --]] 기능. 싼다.모드(논병아리) 현지의 x = p._cleanNumber(논병아리[1]) 현지의 y = p._cleanNumber(논병아리[2]) 한다면 것은 아니다. x 그리고나서 돌아가다 잘못한('mod에 대한 첫 번째 인수가 유효하지 않은 것 같습니다.') 그렇지 않으면 것은 아니다. y 그리고나서 돌아가다 잘못한('mod에 대한 두 번째 인수가 유효하지 않은 것 같습니다.') 또 다른 돌아가다 p._모드(x, y) 끝. 끝. 기능. p._모드(x, y) 현지의 리트 = x % y 한다면 것은 아니다. (0 <= 리트 그리고. 리트 < y) 그리고나서 리트 = 0 끝. 돌아가다 리트 끝. --[[ gcd 여러 숫자의 최대 공약수를 계산합니다. 용도: {{#선택사항:함수 gcd 값 1 값 2 값 3 ... }} --]] 기능. 싼다.gcd(논병아리) 돌아가다 p._gcd(압축 풀기 번호아그스(논병아리)) 끝. 기능. p._gcd(...) 현지의 기능. Gcd 찾기(a, b) 현지의 r = b 현지의 연장자 = a 하는 동안에 r ~= 0 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 현지의 상당의 = 수학.플로어(연장자 / r) 연장자, r = r, 연장자 - 상당의 * r 끝. 한다면 연장자 < 0 그리고나서 연장자 = 연장자 * -1 끝. 돌아가다 연장자 끝. 현지의 결과, 세어보세요 = 접이식의(Gcd 찾기, ...) 돌아가다 결과 끝. --[[ precision_format 규칙에 따라 숫자를 지정된 정밀도와 형식으로 반올림합니다. 원래는 {{filename}에 사용되었습니다.Rnd}}. 출력이 문자열입니다. 용도: {{#선택사항:산술 정밀도_형식 번호 정밀도 } ]] 기능. 싼다.precision_format(논병아리) 현지의 value_string = 논병아리[1] 또는 0 현지의 정확 = 논병아리[2] 또는 0 돌아가다 p._filename_format(value_string, 정확) 끝. 기능. p._filename_format(value_string, 정확) Mediawiki 내장 포맷터에 액세스할 수 있습니다. 현지의 랑그 = mw.콘텐츠 언어 가져오기(); 현지의 가치 가치, value_string = p._cleanNumber(value_string) 정확 = p._cleanNumber(정확) 숫자가 아닌 입력을 확인합니다. 한다면 가치 == 영의 또는 정확 == 영의 그리고나서 돌아가다 잘못한('반올림할 때 입력이 잘못됨') 끝. 현지의 현재의 = p._지루한(가치) 현지의 주문 = p._순서(가치) 반올림 효과로 인해 반환되는 정밀도를 다음과 같이 제한해야 합니다. 터미널 디짓이 부정확하게 보고되기 때문에 일부 상황이 발생합니다. 한다면 주문 + 정확 >= 14 그리고나서 한다면 주문 + p._지루한(value_string) >= 14 그리고나서 정확 = 13 - 주문; 끝. 끝. 반올림한 경우 추가 숫자 잘라내기 한다면 정확 < 현재의 그리고나서 가치 = p._원형의(가치, 정확) 현재의 = p._지루한(가치) 끝. 현지의 formated_num = 랑그:formatNum(수학, 수학, 수학 시험답(가치)) 현지의 서명하다 ASCII 기본값 대신 올바른 단항 빼기 기호 사용 한다면 가치 < 0 그리고나서 서명하다 = '−' 또 다른 서명하다 = '' 끝. 과학적 표기가 필요한 사건 처리 한다면 줄을 대다(formated_num, 'E', 1, 진실의) ~= 영의 또는 수학, 수학, 수학 시험답(주문) >= 9 그리고나서 가치 = 가치 * 수학.pow(10, -주문) 현재의 = 현재의 + 주문 정확 = 정확 + 주문 formated_num = 랑그:formatNum(수학, 수학, 수학 시험답(가치)) 또 다른 주문 = 0; 끝. formated_num = 서명하다 .. formated_num 0이 있는 패드(필요한 경우) 한다면 현재의 < 정확 그리고나서 현지의 패딩 한다면 현재의 <= 0 그리고나서 한다면 정확 > 0 그리고나서 현지의 영점의 = 랑그:formatNum(1.1) formated_num = formated_num .. 영점의:후보선수(2,2) 패딩 = 정확 한다면 패딩 > 20 그리고나서 패딩 = 20 끝. formated_num = formated_num .. string.rep('0', 패딩) 끝. 또 다른 패딩 = 정확 - 현재의 한다면 패딩 > 20 그리고나서 패딩 = 20 끝. formated_num = formated_num .. string.rep('0', 패딩) 끝. 끝. 필요한 경우 지수 표기법을 추가합니다. 한다면 주문 ~= 0 그리고나서 ASCII 기본값 대신 올바른 단항 빼기 기호 사용 한다면 주문 < 0 그리고나서 주문 = '−' .. 랑그:formatNum(수학, 수학, 수학 시험답(주문)) 또 다른 주문 = 랑그:formatNum(주문) 끝. formated_num = formated_num .. '<span style="flash:0.15em 0.25em">×</span>10<sup>' .. 주문 .. '/sup' 끝. 돌아가다 formated_num 끝. --[[ 나누다 나눗셈 연산자 구현 용도: {{#선택사항:수학 나눗셈 x y 라운드 = 정밀도 = } --]] 기능. 싼다.나누다(논병아리) 현지의 x = 논병아리[1] 현지의 y = 논병아리[2] 현지의 둥그런 = 논병아리.둥그런 현지의 정확 = 논병아리.정확 한다면 것은 아니다. 예 아니오 그리고나서 예 아니오 = 요구하다('모듈:'예스노') 끝. 돌아가다 p._지루한(x, y, 예 아니오(둥그런), 정확) 끝. 기능. p._지루한(x, y, 둥그런, 정확) 한다면 y == 영의 또는 y == "" 그리고나서 돌아가다 잘못한("공백제") 그렇지 않으면 것은 아니다. 수에 달하여(y) 그리고나서 한다면 유형(y) == '끈' 그리고. string.sub(y, 1, 1) == '<' 그리고나서 돌아가다 y 또 다른 돌아가다 잘못한("숫자가 아닙니다." .. y) 끝. 그렇지 않으면 x == 영의 또는 x == "" 그리고나서 돌아가다 잘못한("빈 배당금") 그렇지 않으면 것은 아니다. 수에 달하여(x) 그리고나서 한다면 유형(x) == '끈' 그리고. string.sub(x, 1, 1) == '<' 그리고나서 돌아가다 x 또 다른 돌아가다 잘못한("숫자가 아닙니다." .. x) 끝. 또 다른 현지의 z = x / y 한다면 둥그런 그리고나서 돌아가다 p._원형의(z, 0) 그렇지 않으면 정확 그리고나서 돌아가다 p._원형의(z, 정확) 또 다른 돌아가다 z 끝. 끝. 끝. --[[ 입력을 숫자로 해석하는 도우미 기능입니다.만약에 입력이 숫자가 아닌 것 같습니다. 다음과 같이 평가하려고 합니다. 파서 함수식 ]] 기능. p._cleanNumber(number_string) 한다면 유형(number_string) == '숫자' 그리고나서 우리는 번호를 전달받았기 때문에 어떤 처리도 할 필요가 없습니다. 돌아가다 number_string, 끈으로 묶는(number_string) 그렇지 않으면 유형(number_string) ~= '끈' 또는 것은 아니다. number_string:찾아내다('%S') 그리고나서 문자열이 없거나 빈 문자열이 전달되었으므로 종료합니다. 돌아가다 영의, 영의; 끝. 기본 변환 시도 현지의 번호 = 수에 달하여(number_string) 실패한 경우 입력을 식으로 평가합니다. 한다면 번호 == 영의 그리고나서 현지의 성공., 결과 = pcall(mw.다음의.파서 함수.수출의, number_string) 한다면 성공. 그리고나서 번호 = 수에 달하여(결과) number_string = 끈으로 묶는(번호) 또 다른 번호 = 영의 number_string = 영의 끝. 또 다른 number_string = number_string:경기("^%s*(.)%s*$") 문자열이 유효하지만 패딩을 포함할 수 있습니다. 정리하십시오. number_string = number_string:경기("^%+(.*)$") 또는 number_string 선행 + 기호를 모두 트림합니다. 한다면 number_string:찾아내다('^%-?0[xX]') 그리고나서 숫자는 0xnnn 표기법을 사용하여 기준 16을 나타냅니다. 대신 Lua가 탐지한 숫자를 사용하십시오. number_string = 끈으로 묶는(번호) 끝. 끝. 돌아가다 번호, number_string 끝. --[[ 기본 인수 처리를 수행하는 래퍼 함수입니다.이렇게 하면 #invoke의 모든 기능이 전류 중 하나를 사용할 수 있습니다. 또한 모든 인수에 대한 공백을 잘라내고 빈 인수를 제거합니다. ]] 현지의 mt = { __index = 기능.(t, k) 돌아가다 기능.(틀) 한다면 것은 아니다. args를 얻다 그리고나서 args를 얻다 = 요구하다('모듈:인수').args를 얻다 끝. 돌아가다 싼다[k](args를 얻다(틀)) 인수 처리는 모듈에 맡겨집니다.논쟁들.공백이 잘리고 빈 인수가 제거됩니다. 끝. 끝. } 돌아가다 상을 차리다(p, mt)