| r75 vs r76 | ||
|---|---|---|
| ... | ... | |
| 140 | 140 | {{{#!if ap+=1, ab=ab+"0" |
| 141 | 141 | }}}}}} |
| 142 | 142 | }}} |
| 143 | 위의 과정을 거치게 되면 소수점 아래 최대 자릿수를 똑같이 맞춘 상태에서 계산하게 되므로 ap==bp가 됩니다. | |
| 143 | 144 | |
| 144 | a가 음수인 경우 소수점 아래 값은 순 숫자만 표기된 상태이므로 양수 취급으로 되지 않게 소수점 아래 값에 음수 표기를 남깁니다. | |
| 145 | a가 음수인 경우 소수점 아래 값은 순 숫자만 표기된 상태이므로 양수 취급으로 되지 않게 소수점 아래 값인 ab에 음수 표기를 남깁니다. | |
| 145 | 146 | {{{#!if as[0]==45 |
| 146 | 147 | {{{#!if ab="-"+ab |
| 147 | 148 | }}}}}} |
| 148 | ||
| 149 | 마찬가지로 b가 음수인 경우 b의 소수점 아래 값은 음수이므로 소수점 아래 값인 bb에 음수 표기를 남깁니다. | |
| 149 | 150 | {{{#!if bs[0]==45 |
| 150 | 151 | {{{#!if bb="-"+bb |
| 151 | 152 | }}}}}} |
| ... | ... | |
| 160 | 161 | 소수점 아래끼리 더한 자릿수가 얼마나 되는지 보기 위해 rb를 문자열로 바꿉니다. |
| 161 | 162 | {{{#!if this.rb=rb.toString() |
| 162 | 163 | }}} |
| 163 | 문자열 길이를 rp로 정의합니다. | |
| 164 | 문자열로 된 rb의 길이를 rp로 정의합니다. | |
| 164 | 165 | {{{#!if this.rp=rb.length |
| 165 | 166 | }}} |
| 166 | rb가 음수이면 rp를 -1로 줄여 정의합니다. | |
| 167 | rb가 음수이면 rp를 -1로 줄여 정의합니다. ap, bp는 마이너스를 붙이기 전에 고정되어 있으므로 줄일 필요가 없습니다. | |
| 167 | 168 | {{{#!if rb[0]==45 |
| 168 | 169 | {{{#!if rp=rp-1 |
| 169 | 170 | }}}}}} |
| 170 | 171 | |
| 171 | ru는 정수이므로 ru가 0보다 크면 곧 1 이상이며, 1 이상이면 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다. | |
| 172 | ru는 정수이므로 ru가 0보다 크면 곧 ru는 1 이상의 정수이며, 1 이상이면 a+b 또는 a-b가 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. rb를 정리하는 과정에서 ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다. 앞에서 rb를 string으로 바꿨으므로 +rb를 다룹니다. | |
| 172 | 173 | {{{#!if ru>0 |
| 173 | {{{#!if rb>0 | |
| 174 | {{{#!if +rb>=0 | |
| 175 | rb가 자릿수를 초과할 경우 ap=bp인 상황에서 rp>ap가 됩니다. rb는 첫 숫자가 1인 정수가 되므로 첫 숫자인 1을 삭제한 문자열로 정의합니다. | |
| 176 | {{{#!if rp>ap | |
| 177 | {{{#!if ru=ru+1, rb=rb.substr(1, rp-1) | |
| 174 | 178 | }}}}}} |
| 179 | rb가 자릿수를 초과하지 않을 경우 rb를 다시 정의할 필요 없이 그대로 둡니다. | |
| 180 | {{{#!if rp<=ap | |
| 181 | }}}}}} | |
| 182 | ||
| 175 | 183 | {{{#!if ru==0 |
| 176 | 184 | }}} |
| 177 | 185 | {{{#!if ru<0 |
| 178 | 186 | }}} |
| 187 | ||
| 188 | ||
| 179 | 189 | {{{#!if f=="*" |
| 180 | 190 | 18자리 숫자로 입력할 수 있는 최대 정수는 999,999,999,999,999,999입니다. |
| 181 | 191 | 다행히 999,999,999,999,999,999*9=8,999,999,999,999,999,991 < long 한계치 9,223,372,036,854,775,807 이라서 a*각 자릿수로 덧셈해볼 수는 있습니다. |
| ... | ... |