| r170 vs r171 | ||
|---|---|---|
| ... | ... | |
| 248 | 248 | }}}}}} |
| 249 | 249 | |
| 250 | 250 | 앞에 0을 채웠다면 이제, 소수점 아래로 나오는 숫자를 보고 마지막에서부터 0이 나오면 한 자리씩 지우는 과정을 시작합니다. |
| 251 | rp를 rb의 문자열 길이로 다시 정의합니다. | |
| 252 | {{{#!if this.rp=rb.length | |
| 253 | }}} | |
| 254 | 251 | |
| 255 | ||
| 256 | ||
| 257 | ||
| 258 | ||
| 259 | ||
| 260 | ||
| 261 | ||
| 262 | ||
| 263 | ||
| 264 | ||
| 265 | ||
| 266 | ||
| 267 | ||
| 268 | ||
| 269 | ||
| 270 | ||
| 271 | ||
| 272 | ||
| 273 | ||
| 274 | ||
| 275 | ||
| 276 | ||
| 277 | ||
| 278 | ||
| 279 | ||
| 280 | ||
| 281 | ||
| 282 | ||
| 283 | ||
| 284 | ||
| 285 | ||
| 286 | ||
| 287 | ||
| 288 | ||
| 289 | ||
| 290 | ||
| 291 | ||
| 292 | ||
| 293 | ||
| 294 | ||
| 295 | ||
| 296 | ||
| 297 | ||
| 298 | ||
| 299 | ||
| 300 | ||
| 301 | ||
| 302 | ||
| 303 | ||
| 304 | ||
| 305 | ||
| 306 | ||
| 307 | ||
| 308 | ||
| 309 | ||
| 310 | ||
| 311 | ||
| 312 | ||
| 313 | ||
| 314 | ||
| 315 | ||
| 316 | 여기까지가 덧셈 또는 뺄셈연산의 계산과정 | |
| 252 | 여기까지가 덧셈 또는 뺄셈연산의 계산과정이며 과정은 이후 rb 정리 과정으로 넘어갑니다. | |
| 317 | 253 | }}} |
| 318 | 254 | |
| 319 | 255 | {{{#!if f=="*" |
| ... | ... | |
| 1424 | 1360 | }}}{{{#!if tw=(+ab.substr(i-1,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1 |
| 1425 | 1361 | }}} |
| 1426 | 1362 | |
| 1427 | ##곱셈 문자열 | |
| 1428 | 18자리씩 끊어 표기하므로 소수점 위 19~36번째 자리에 해당하는 rs값이 (곱한 값을 더했는데도) 0일 경우 rs를 빈 문자열로 바 | |
| 1363 | 여기까지가 a*b 계산과정입니다. | |
| 1364 | }}} | |
| 1365 | ||
| 1366 | 여기까지가 곱셈의 연산 과정이며 rb 정리 부분으로 넘어갑니다. | |
| 1367 | }}} | |
| 1368 | ||
| 1369 | ##rb 정리 부분 (덧셈, 뺄셈, 곱셈 공통) | |
| 1370 | 먼저 ru를 문자열로 변환합니다. 18자리씩 끊어 표기하므로 소수점 위 19~36번째 자리에 해당하는 rs값이 (곱한 값을 더했는데도) 0일 경우 rs를 빈 문자열로 바꿉니다. 곱셈과정에서 ru의 윗자리인 rs값이 0보다 클 경우, 1~18번째 자리인 ru에 빈 자리를 채우도록 ru의 왼쪽을 0으로 채웁니다. | |
| 1371 | {{{#!if ru=ru.toString() | |
| 1372 | }}}{{{#!if f=="*" | |
| 1429 | 1373 | {{{#!if rs==0 |
| 1430 | {{{#!if rs="" | |
| 1374 | {{{#!if rs="" | |
| 1431 | 1375 | }}}}}}{{{#!if rs>0 |
| 1432 | {{{#!if rs=rs.toString(), ru= | |
| 1433 | }}}}}} | |
| 1376 | {{{#!if rs=rs.toString(), ru="000000000000000000"+ru, ru=ru.substr(ru.length-18, 18) | |
| 1377 | }}}}}}}}} | |
| 1434 | 1378 | |
| 1435 | 소수점 아래 19~36번째 자리에 해당하는 ri값이 0일 경우 ri를 빈 문자열로 바꿉니다. ri가 0보다 클 경우 rb를 문자열로 변환하고 rb의 오른쪽을 0으로 채웁니다. | |
| 1379 | 소수점 아래 마지막 문자의 번호는 (문자열 길이 - 1)입니다. 극단적으로 .10000 00000 00000 000 같은 것이 나올 수 있겠지만 18회 조사합니다. | |
| 1380 | substr(0,0)으로 하면 ""이 됩니다. | |
| 1381 | ||
| 1382 | rb를 문자열로 변환합니다. 곱셈 과정에서 소수점 아래 19~36번째 자리에 해당하는 ri값이 0일 경우 ri를 빈 문자열로 바꿉니다. ri가 0보다 클 경우 rb를 문자열로 변환하고 rb의 오른쪽을 0으로 채웁니다. | |
| 1383 | {{{#!if rb=rb.toString() | |
| 1384 | }}}{{{#!if f=="*" | |
| 1436 | 1385 | {{{#!if ri==0 |
| 1437 | {{{#!if ri="" | |
| 1386 | {{{#!if ri="" | |
| 1438 | 1387 | }}}}}}{{{#!if ri>0 |
| 1439 | {{{#!if ri=ri.toString(), rb=rb | |
| 1388 | {{{#!if ri=ri.toString(), rb=rb+"000000000000000000", rb=rb.substr(0, 18) | |
| 1389 | }}}}}}}}} | |
| 1390 | ||
| 1391 | 곱셈연산이고 ri가 빈 문자열이 아닐 경우 이 논리값을 ps로 정의합니다. | |
| 1392 | ps가 true이면 ri를 rb의 문자열 길이로 정의하고, 그렇지 않은 경우 rp를 rb의 문자열 길이로 다시 정의합니다. | |
| 1393 | {{{#!if ps=(f=="*")&&(ri!=""), ps | |
| 1394 | {{{#!if this.rp=ri.length | |
| 1395 | }}}}}}{{{#!if !ps | |
| 1396 | {{{#!if this.rp=rb.length | |
| 1440 | 1397 | }}}}}} |
| 1441 | 1398 | |
| 1399 | ri가 빈 문자열이 아닐 경우 ri의 오른쪽부터 붙은 "0"들을 모두 지웁니다, ri가 빈 문자열일 경우 rb의 오른쪽에 붙은 "0"들을 모두 지웁니다, | |
| 1442 | 1400 | |
| 1443 | ||
| 1444 | }}} | |
| 1401 | {{{#!if rb[rp-1]==48 | |
| 1402 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1403 | }}}}}} | |
| 1404 | {{{#!if rb[rp-1]==48 | |
| 1405 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1406 | }}}}}} | |
| 1407 | {{{#!if rb[rp-1]==48 | |
| 1408 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1409 | }}}}}} | |
| 1410 | {{{#!if rb[rp-1]==48 | |
| 1411 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1412 | }}}}}} | |
| 1413 | {{{#!if rb[rp-1]==48 | |
| 1414 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1415 | }}}}}} | |
| 1445 | 1416 | |
| 1446 | }}} | |
| 1417 | {{{#!if rb[rp-1]==48 | |
| 1418 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1419 | }}}}}} | |
| 1420 | {{{#!if rb[rp-1]==48 | |
| 1421 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1422 | }}}}}} | |
| 1423 | {{{#!if rb[rp-1]==48 | |
| 1424 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1425 | }}}}}} | |
| 1426 | {{{#!if rb[rp-1]==48 | |
| 1427 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1428 | }}}}}} | |
| 1429 | {{{#!if rb[rp-1]==48 | |
| 1430 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1431 | }}}}}} | |
| 1447 | 1432 | |
| 1433 | {{{#!if rb[rp-1]==48 | |
| 1434 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1435 | }}}}}} | |
| 1436 | {{{#!if rb[rp-1]==48 | |
| 1437 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1438 | }}}}}} | |
| 1439 | {{{#!if rb[rp-1]==48 | |
| 1440 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1441 | }}}}}} | |
| 1442 | {{{#!if rb[rp-1]==48 | |
| 1443 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1444 | }}}}}} | |
| 1445 | {{{#!if rb[rp-1]==48 | |
| 1446 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1447 | }}}}}} | |
| 1448 | ||
| 1449 | {{{#!if rb[rp-1]==48 | |
| 1450 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1451 | }}}}}} | |
| 1452 | {{{#!if rb[rp-1]==48 | |
| 1453 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1454 | }}}}}} | |
| 1455 | {{{#!if rb[rp-1]==48 | |
| 1456 | {{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1 | |
| 1457 | }}}}}}}}} | |
| 1458 | rb 정리를 이것으로 종료합니다. | |
| 1459 | ||
| 1460 | ||
| 1461 | ||
| 1462 | ||
| 1463 | ||
| 1448 | 1464 | error code 03 번 : 오버플로 |
| 1449 | 1465 | error code 04 번 : 언더플로 |
| 1450 | 1466 | error code 05 번 : 0으로 나눌 수 없습니다. |
| ... | ... |