r117 vs r118
......
1515
0.303과 0.0303은 다른 수이므로 자리수가 다름을 표시할 용도
1616
'''ru''' : "result" upper value (integer→string); '''rb''' : "result" below value (integer→string);
1717
'''rp''' : "result" # of places of decimal (integer);
18
'''ps''' : pass (logical);
19
{{{#!if this.as=a.toString(), this.bs=b.toString(), this.ru=0+0, this.rb=0+0, this.rp=0+0
18
'''i''' : index; '''tv''' temporary value; '''ps''' : pass (logical);
19
{{{#!if this.as=a.toString(), this.bs=b.toString(), this.ru=0+0, this.rb=0+0, this.rp=0+0, this.i=0+0, this.tv=1
2020
}}}{{{#!if this.al=as.length, this.bl=bs.length, this.ad=as.indexOf("."), this.bd=bs.indexOf(".")
2121
}}}{{{#!if ad!=-1
2222
소수점이 발견되는 자리 번호가 ad이므로 ad+1번에 해당되는 자리부터 끝까지 표기.
......
193193
중복 처리를 막기 위해 변수 하나를 정의합니다.
194194
{{{#!if this.ps=false
195195
}}}
196
197
소수점 아래 값의 부호와 소수점 위의 값의 부호가 서로 다른 경우 계산을 하기 위해 값을 하나 정의합니다.
198
{{{#!if i<ap
199
{{{#!if tv=10*tv, i+=1
200
}}}}}}
201
{{{#!if i<ap
202
{{{#!if tv=10*tv, i+=1
203
}}}}}}
204
{{{#!if i<ap
205
{{{#!if tv=10*tv, i+=1
206
}}}}}}
207
{{{#!if i<ap
208
{{{#!if tv=10*tv, i+=1
209
}}}}}}
210
{{{#!if i<ap
211
{{{#!if tv=10*tv, i+=1
212
}}}}}}
213
214
{{{#!if i<ap
215
{{{#!if tv=10*tv, i+=1
216
}}}}}}
217
{{{#!if i<ap
218
{{{#!if tv=10*tv, i+=1
219
}}}}}}
220
{{{#!if i<ap
221
{{{#!if tv=10*tv, i+=1
222
}}}}}}
223
{{{#!if i<ap
224
{{{#!if tv=10*tv, i+=1
225
}}}}}}
226
{{{#!if i<ap
227
{{{#!if tv=10*tv, i+=1
228
}}}}}}
229
230
{{{#!if i<ap
231
{{{#!if tv=10*tv, i+=1
232
}}}}}}
233
{{{#!if i<ap
234
{{{#!if tv=10*tv, i+=1
235
}}}}}}
236
{{{#!if i<ap
237
{{{#!if tv=10*tv, i+=1
238
}}}}}}
239
{{{#!if i<ap
240
{{{#!if tv=10*tv, i+=1
241
}}}}}}
242
{{{#!if i<ap
243
{{{#!if tv=10*tv, i+=1
244
}}}}}}
245
246
{{{#!if i<ap
247
{{{#!if tv=10*tv, i+=1
248
}}}}}}
249
{{{#!if i<ap
250
{{{#!if tv=10*tv, i+=1
251
}}}}}}
252
{{{#!if i<ap
253
{{{#!if tv=10*tv, i+=1
254
}}}}}}
255
196256
Case 1 : ru가 0보다 큰 경우
197257
ru는 정수이므로 ru가 0보다 크면 곧 ru는 1 이상의 정수이며, 1 이상이면 a+b 또는 a-b가 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. rb를 정리하는 과정에서 ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다. 앞에서 rb를 string으로 바꿨으므로 +rb를 다룹니다.
198258
{{{#!if ru>0
......
213273
{{{#!if (+rb<0)&&(ps==false)
214274
{{{#!if ru=ru-1
215275
}}}
216
rb의 자릿수인 rp만큼 10을 제곱한 값을 rb에서 증가시켜 rb를 재정의합니다. 그러면 rb는 양수가 됩니다. 그리고 rb를 다시 문자열로 변환합니다.
217
{{{#!if rb=10**rp+(+rb)
276
소수점 아래 자릿수인 ap만큼 10을 제곱한 값(tv)을 rb에서 증가시켜 rb를 재정의합니다. 그러면 rb는 양수가 됩니다. 그리고 rb를 다시 문자열로 변환합니다.
277
{{{#!if rb=tv+(+rb)
218278
}}}{{{#!if rb=rb.toString()
219279
}}}
220280
{{{#!if ps=true
......
272332
ru<=-1이므로 ru+1를 해도 최대 0이 됩니다.
273333
{{{#!if ru=ru+1
274334
}}}
275
rb>0에서 rb은 음수(계산결과)의 음수(마이너스값이 줄어듦)이므로 rb의 자릿수인 rp만큼 10을 제곱한 값에서 rb을 '''뺀''' 값으로 rb를 재정의합니다. 그러면 rb는 양수이지만 계산결과인 음수에 맞춘 값이 됩니다. 그리고 rb를 다시 문자열로 변환합니다. 변환합니다.
276
{{{#!if rb=10**rp-(+rb)
335
rb>0에서 rb은 음수(계산결과)의 음수(마이너스값이 줄어듦)이므로 rb의 자릿수인 rp만큼 10을 제곱한 값(tv)에서 rb을 '''뺀''' 값으로 rb를 재정의합니다. 그러면 rb는 양수이지만 계산결과인 음수에 맞춘 값이 됩니다. 그리고 rb를 다시 문자열로 변환합니다. 변환합니다.
336
{{{#!if rb=tv-(+rb)
277337
}}}{{{#!if rb=rb.toString()
278338
}}}{{{#!if ps=true
279339
}}}}}}
......
444504
445505
아래 출력 변수 설명
446506
'''sa''' : searching a; '''sb''' : searching b; '''sf''' : searching f;
447
'''rl''' : result string length to output; '''i''' : index; '''p''' : a point of string(s);
507
'''rl''' : result string length to output; '''p''' : a point of string(s);
448508
ru는 계산결과에서 소수점 위 자리이므로, dot(.)이 나오지 않습니다.
449509
##여기까지 주석(주석 아님)
450510
}}}}}}{{{#!wiki style="font-weight: 300; font-size: 20px;"
......