r294 vs r295
......
51365136
{{{#!if (au==0)&&(ab==0)
51375137
{{{#!if br=true
51385138
}}}}}}}}}
5139
tn을 빈 문자열로, ts를 false로 초기화합니다. 마지막 72회까지 몫을 구하는 계산을 했음에도 불구하고 나머지가 나누어떨어져 0이 되지 않는다면 tn을 "..."로, ts를 true로 바꿉니다.
5140
{{{#!if tn="", ts=false, !br
5139
tn을 빈 문자열로 초기화하고 변수 ts를 가져옵니다. 마지막 72회까지 몫을 구하는 계산을 했음에도 불구하고 나머지가 나누어떨어져 0이 되지 않는다면 tn을 "..."로, ts를 true로 바꿉니다.
5140
{{{#!if tn="", !br
51415141
{{{#!if tn="...", ts=true
51425142
}}}}}}
51435143
......
52185218
##== 계산 결과 표시 정리하기 ==
52195219
연산이 끝났으면 표기된 숫자를 정리합니다.
52205220
5221
##ru 정리 부분
5222
먼저 (곱셈연산에서 정수값으로 나오는) ru를 문자열로 변환합니다.
5221
##rs, ru 정리 부분
5222
먼저 ru를 (곱셈연산에서 정수값으로 나올 수 있으므로) 문자열로 바꿉니다.
52235223
{{{#!if ru=ru.toString()
52245224
}}}
52255225
18자리씩 끊어 표기하므로 소수점 위 19~36번째 자리에 해당하는 rs값이 (가령 곱셈에서, 곱한 값을 더한 결과가) 0일 경우 rs를 빈 문자열로 바꿉니다. 이 때 ru를 정수로 바꿔 ru 왼쪽에 있는 0들을 지운 다음, ru를 문자열로 바꿉니다.
......
52355235
{{{#!if rs=+rs, rs=rs.toString()
52365236
}}}}}}
52375237
5238
##rb 정리 부분
5239
소수점 아래 마지막 문자의 번호는 (.length - 1)입니다. 극단적으로 .10000 00000 00000 000 같은 것이 나올 수 있겠지만 18회 조사합니다.
5240
substr(0,0)으로 면 ""이 됩니다.
5241
5242
곱셈연산인 경우이거나 나눗셈에 나누어떨어지자릿수를 초과하지 않은(ts가 false인) 경우에서, ri가 빈 문자열이 아닐 때 true를 주는 논리값으로 ps를 정의합니다.
5243
{{{#!if ps=(((f=="*")||((f=="/")&&!ts))&&(+ri>0))
5244
}}}
5245
소수점 아래 19~36번째 자리에 해당하는 ri값이 0일 경우 ri를 빈 문자열로 바꿉니다.
5238
##rb, ri 정리 부분
5239
i보다 소수점 아래부분을 써내려가야 하는 상황아닌(ts가 false인) 경우에서, 소수점 아래 19~36번째 자리에 해당하는 ri값이 0일 경우 ri를 빈 문자열로 바꿉니다.
52465240
이 때 ri와 rb가 모두 0일 경우 rb도 빈 문자열로 바꾸고 rp=0으로 둡니다.
5241
{{{#!if !ts
52475242
{{{#!if +ri==0
52485243
{{{#!if ri=""
52495244
}}}{{{#!if +rb==0
52505245
{{{#!if rb="", rp=0
5251
}}}}}}}}}
5246
}}}}}}}}}}}}
52525247
5253
곱셈 과정에서 ri가 0보다 클 경우 rb문자열로 변환하고 rb, ri의 왼쪽을 0으로 채웁니다.
5254
{{{#!if ps
5255
{{{#!if rb=rb.toString(), ri=ri.toString(), rb=pd+rb, rb=rb.substr(rb.length-18, 18), ri=pd+ri, ri=ri.substr(ri.length-18, 18)
5256
}}}}}}
5248
ri가 문자열이 아닐 (+ri가 0보다 클) true주는 논리값으로 ps를 정의합니다.
5249
{{{#!if ps=(+ri>0)
5250
}}}
52575251
5258
ri가 비었고 rb가 0 아닌 경우 rb를 문자열로 바꾼 다음 왼쪽을 0으로 채웁니다.
5259
{{{#!if !ps&&(+rb>0)
5252
rb가 비어있지 않을 (+rb가 0보다 클) 경우 rb를 문자열로 바꾼 다음 왼쪽을 0으로 채웁니다.
5253
{{{#!if (+rb>0)
52605254
{{{#!if rb=rb.toString(), rb=pd+rb, rb=rb.substr(rb.length-18, 18)
52615255
}}}}}}
5256
ri가 비어있지 않을 (+ri가 0보다 클) 경우 ri를 문자열로 바꾼 다음 ri의 왼쪽을 0으로 채웁니다.
5257
{{{#!if (+ri>0)
5258
{{{#!if ri=ri.toString(), ri=pd+ri, ri=ri.substr(ri.length-18, 18)
5259
}}}}}}
52625260
5263
ps가 true이면 rp를 ri의 길이로, 그렇지 않고 rb만 0이 아닌경우 rp를 rb의 길이로 정의합니다.
5261
!ts인 상황에서 ps가 true이면 rp를 ri의 길이로, 그렇지 않고 rb만 0이 아닌경우 rp를 rb의 길이로 정의합니다.
5262
{{{#!if !ts
52645263
{{{#!if ps
52655264
{{{#!if this.rp=ri.length
52665265
}}}
......
52725271
{{{#!if this.rp=rb.length
52735272
}}}}}}
52745273
5275
곱셈연산이면서 ri가 빈 문자열이 아닐 경우 ri의 오른쪽부터 붙은 "0"들을 모두 지웁니다, 그렇지 않을 경우 rb의 오른쪽에 붙은 "0"들을 모두 지웁니다,
5274
!ts이면서 ri가 빈 문자열이 아닐 경우 ri의 오른쪽부터 붙은 "0"들을 모두 지웁니다.
52765275
{{{#!if ps
52775276
{{{#!if (rp>9)&&(ri.substr(rp-9,9)=="000000000")
52785277
{{{#!if this.ri=ri.substr(0,rp-9), rp=rp-9
......
52905289
{{{#!if this.ri=ri.substr(0,rp-1), rp=rp-1
52915290
}}}}}}}}}
52925291
5292
!ts이면서 이면서 ri가 빈 문자열일 경우, rb의 오른쪽에 붙은 "0"들을 모두 지웁니다,
52935293
{{{#!if !ps
52945294
{{{#!if (rp>9)&&(rb.substr(rp-9,9)=="000000000")
52955295
{{{#!if this.rb=rb.substr(0,rp-9), rp=rp-9
......
53065306
{{{#!if (rp>1)&&(rb.substr(rp-1,1)=="0")
53075307
{{{#!if this.rb=rb.substr(0,rp-1), rp=rp-1
53085308
}}}}}}}}}
5309
}}}
53095310
5311
ts인 경우 rb, ri의 오른쪽 부분을 정리하지 않고 rp를 39로 정의합니다.
5312
{{{#!if ts
5313
{{{#!if rp=39
5314
}}}}}}
5315
5316
5317
53105318
rb 정리를 이것으로 종료합니다.
53115319
53125320
##== 오류 코드 ==
......