| r247 vs r248 | ||
|---|---|---|
| ... | ... | |
| 1479 | 1479 | }}} |
| 1480 | 1480 | 이 때 ty가 19자리가 되면 넘친 첫번째 자리의 값을 tx의 일의 자리로 더하고 아래 18자리의 값을 ty로 다시 정의합니다. tx는 19자리 숫자가 되어도 문제가 없습니다. |
| 1481 | 1481 | {{{#!if ty=ty.toString(), ty.length==19 |
| 1482 | {{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18) | |
| 1482 | {{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18) | |
| 1483 | 1483 | }}}}}} |
| 1484 | 1484 | 이렇게 하면 tx=bu*tw<=au가 됩니다. (bu가 au보다 크면 tw는 tw의 정의에서 값이 0이 되므로 부등호가 성립됩니다.) |
| 1485 | ty를 정수로 바꿉니다. | |
| 1486 | {{{#!if ty=+ty | |
| 1487 | }}} | |
| 1485 | 1488 | (2.1/1.6 처럼) ty가 넘쳐 tx 값이 더해지는 경우가 있으므로 몫이 유효한 값인지 검산합니다. 만일 tx ty 가 기존 au ab을 넘게 되면 tw에서 1을 빼고, tx, ty를 다시 정의합니다. |
| 1486 | 1489 | {{{#!if (tx>au)||((tx==au)&&(ty>ab)) |
| 1487 | 1490 | {{{#!if tw-=1, tx=bu*tw, ty=bb*tw |
| 1488 | 1491 | }}} |
| 1489 | 1492 | 마찬가지로 ty가 19자리가 된다면 넘친 첫번째 자리의 값을 tx의 일의 자리로 더합니다. |
| 1490 | 1493 | {{{#!if ty=ty.toString(), ty.length==19 |
| 1491 | {{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18) | |
| 1492 | }}}}}} | |
| 1494 | {{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18) | |
| 1495 | }}}}}} | |
| 1496 | ty를 정수로 바꿉니다. | |
| 1497 | {{{#!if ty=+ty | |
| 1498 | }}} | |
| 1499 | }}} | |
| 1493 | 1500 | 이렇게 만들어진 tx, ty가 있으면 이를 반영합니다. |
| 1494 | 1501 | }}} |
| 1495 | 1502 | ps일 경우 tm의 오른쪽에 "0"을 더합니다. |
| ... | ... | |
| 1535 | 1542 | {{{#!if ab=ab.substr(1,17)+"0" |
| 1536 | 1543 | }}}}}} |
| 1537 | 1544 | ##i=1 part 1 |
| 1538 | (변수 tn으로 만들 수 있는 여분의 1자리 +) 18자리 + 18자리 숫자를 18자리+18자리 숫자로 나누는 계산을 합니다. tn이 9가 될 경우 9로 시작하는 19자리 숫자를 long integer로 모두 표현할 수 없으므로 10**18 자리부터 먼저 계산합니다. 10**18의 1번째 숫자의 몫을 구한 다음 나머지를 18자리 숫자에 더하는 과정(part 1)을 거친 다음 그 18자리에서 몫을 구하는 과정(part 2)을 거칩니다. | |
| 1545 | 몫으로 기록할 숫자의 첫번째 자리를 구했다면, 그 다음 자리의 숫자를 찾기 위해 (변수 tn으로 만들 수 있는 여분의 1자리 +) 18자리 + 18자리 숫자를 18자리+18자리 숫자로 나누는 계산을 합니다. tn이 9가 될 경우 9로 시작하는 19자리 숫자를 long integer로 모두 표현할 수 없으므로 10**18 자리부터 먼저 계산합니다. 10**18의 1번째 숫자의 몫을 구한 다음 나머지를 18자리 숫자에 더하는 과정(part 1)을 거친 다음 그 18자리에서 몫을 구하는 과정(part 2)을 거칩니다. | |
| 1539 | 1546 | |
| 1540 | tn이 빈 문자열이 아니라면 (앞에 au에서 한 자리 수를 떼온 것이므로) tn에 0을 더하여 19자리로 만들고 몫을 구합니다. | |
| 1541 | {{{#!if tn!="" | |
| 1542 | tn을 19자리 정수로 바꿉니다. | |
| 1543 | {{{#!if tn+=pd, tn=+tn, | |
| 1547 | au와 ab를 정수로 다시 바꿉니다. 그리고 tn이 빈 문자열이 아니라면 (앞에 au에서 한 자리 수를 떼온 것이므로) tn에 0을 더하여 19자리로 만들고 몫을 구합니다. | |
| 1548 | {{{#!if au=+au, ab=+ab, tn!="" | |
| 1549 | tn을 19자리 정수로 바꿉니다. | |
| 1550 | {{{#!if tn+=pd, tn=+tn, | |
| 1544 | 1551 | }}} |
| 1545 | 1552 | tz를 몫으로 정의합니다. 앞의 tw를 처리하는 방법과 같습니다. tn을 정수로 만들었으므로 소수점 아래를 비교한다면 정수의 소수점 아래에 해당하는 0과 비교합니다. |
| 1546 | 1553 | {{{#!if tz=tn/bu, tx=bu*tz, ty=bb*tz |
| 1547 | 1554 | }}}{{{#!if ty=ty.toString(), ty.length==19 |
| 1548 | {{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18) | |
| 1555 | {{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18) | |
| 1549 | 1556 | }}}}}} |
| 1557 | {{{#!if ty=+ty | |
| 1558 | }}} | |
| 1550 | 1559 | {{{#!if (tx>tn)||((tx==tn)&&(ty>0)) |
| 1551 | 1560 | {{{#!if tz-=1, tx=bu*tz, ty=bb*tz |
| 1552 | 1561 | }}}{{{#!if ty=ty.toString(), ty.length==19 |
| 1553 | {{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18) | |
| 1554 | }}}}}} | |
| 1562 | {{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18) | |
| 1563 | }}}}}} | |
| 1564 | {{{#!if ty=+ty | |
| 1565 | }}}}}} | |
| 1555 | 1566 | tn에서 나누어떨어지는 값을 뺀 나머지를 반영하여 au, ab에 더합니다. 소수점 아래 부분인 ab보다 ty가 크다면 tn에서 1을 빼어 계산합니다. |
| 1556 | 1567 | {{{#!if ty>ab |
| 1557 | 1568 | {{{#!if tn-=1, ab+=+("1"+pd) |
| ... | ... | |
| 1563 | 1574 | }}} |
| 1564 | 1575 | }}} |
| 1565 | 1576 | ##i=1 part 2 |
| 1566 | br이 걸려있으면 실행하지 않습니다. 그러므로 전체적으로 조건을 !br로 둔 다음 계산을 진행합니다. | |
| 1577 | br(0으로 나누어떨어짐) 이 걸려있으면 실행하지 않습니다. 그러므로 전체적으로 조건을 !br로 둔 다음 계산을 진행합니다. | |
| 1567 | 1578 | {{{#!if !br |
| 1568 | {{{# | |
| 1579 | ps를 false로 초기화한 다음 앞에서 했던 처리와 동일하게 진행합니다. | |
| 1580 | {{{#if ps=false, ts=((au<bu)||((au==bu)&&(ab<bb))), ts | |
| 1581 | ts일 경우 ps이고, "ps일 경우 tm의 오른쪽에 "0"을 더하"는 과정을 여기로 병합합니다. | |
| 1582 | {{{#if ps=true | |
| 1583 | {{{#!if tm+="0" | |
| 1569 | 1584 | }}} |
| 1585 | }}}}}} | |
| 1586 | {{{#!if !ts | |
| 1587 | tw, tx, ty를 정의하고 처리하는 과정은 앞자리에서 몫을 찾는 과정과 동일합니다. 앞에서 이미 au, ab를 정수로 만들었으므로 여기에 au, ab를 정수로 만드는 처리를 할 필요가 없습니다. | |
| 1588 | {{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw | |
| 1589 | }}}{{{#!if ty=ty.toString(), ty.length | |
| 1590 | ||
| 1570 | 1591 | }}} |
| 1592 | }}} | |
| 1593 | }}} | |
| 1571 | 1594 | |
| 1572 | 1595 | |
| 1573 | 1596 | |
| ... | ... |