r75 vs r76
......
140140
{{{#!if ap+=1, ab=ab+"0"
141141
}}}}}}
142142
}}}
143
위의 과정을 거치게 되면 소수점 아래 최대 자릿수를 똑같이 맞춘 상태에서 계산하게 되므로 ap==bp가 됩니다.
143144
144
a가 음수인 경우 소수점 아래 값은 순 숫자만 표기된 상태이므로 양수 취급으로 되지 않게 소수점 아래 값에 음수 표기를 남깁니다.
145
a가 음수인 경우 소수점 아래 값은 순 숫자만 표기된 상태이므로 양수 취급으로 되지 않게 소수점 아래 값인 ab에 음수 표기를 남깁니다.
145146
{{{#!if as[0]==45
146147
{{{#!if ab="-"+ab
147148
}}}}}}
148
b도 마찬가지니다.
149
마찬가지로 b가 음수인 경우 b의 소수점 아래 값은 음수이므로 소수점 아래 값인 bb에 음수 표기를 남깁니다.
149150
{{{#!if bs[0]==45
150151
{{{#!if bb="-"+bb
151152
}}}}}}
......
160161
소수점 아래끼리 더한 자릿수가 얼마나 되는지 보기 위해 rb를 문자열로 바꿉니다.
161162
{{{#!if this.rb=rb.toString()
162163
}}}
163
문자열 길이를 rp로 정의합니다.
164
문자열 된 rb의 길이를 rp로 정의합니다.
164165
{{{#!if this.rp=rb.length
165166
}}}
166
rb가 음수이면 rp를 -1로 줄여 정의합니다.
167
rb가 음수이면 rp를 -1로 줄여 정의합니다. ap, bp는 마이너스를 붙이기 전에 고정되어 있으므로 줄일 필요가 없습니다.
167168
{{{#!if rb[0]==45
168169
{{{#!if rp=rp-1
169170
}}}}}}
170171
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를 다룹니다.
172173
{{{#!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)
174178
}}}}}}
179
rb가 자릿수를 초과하지 않을 경우 rb를 다시 정의할 필요 없이 그대로 둡니다.
180
{{{#!if rp<=ap
181
}}}}}}
182
175183
{{{#!if ru==0
176184
}}}
177185
{{{#!if ru<0
178186
}}}
187
188
179189
{{{#!if f=="*"
180190
18자리 숫자로 입력할 수 있는 최대 정수는 999,999,999,999,999,999입니다.
181191
다행히 999,999,999,999,999,999*9=8,999,999,999,999,999,991 < long 한계치 9,223,372,036,854,775,807 이라서 a*각 자릿수로 덧셈해볼 수는 있습니다.
......