r73 vs r74
......
1010
'''ab''' : "a" below value (string→integer); '''bb''' : "b" below value (string→integer);
1111
'''ap''' : "a" # of places of decimal (integer); '''bp''' : "b" # of places of decimal (integer);
1212
0.303과 0.0303은 다른 수이므로 자리수가 다름을 표시할 용도
13
'''ru''' : result upper value (integer); '''rb''' : result below value (integer)
13
'''ru''' : "result" upper value (integer); '''rb''' : "result" below value (integer); '''rp''' : "result" # of places of decimal (integer)
1414
{{{#!if this.as=a.toString(), this.bs=b.toString(), this.ru=0+0, this.rb=0+0
1515
}}}{{{#!if this.al=as.length, this.bl=bs.length, this.ad=as.indexOf("."), this.bd=bs.indexOf(".")
1616
}}}{{{#!if ad!=-1
......
9696
}}}}}}{{{#!if ap>bp
9797
{{{#!if bp+=1, bb=bb+"0"
9898
}}}}}}
99
최대 18회.
99
소수점 아래 최대 18자리까지의 수를 취급하므로 최대 18회.
100100
101101
반대로 b의 소수점 자릿수가 많은 경우도 있습니다.
102102
{{{#!if bp>ap
......
157157
뺄셈은 덧셈의 역연산이고 구조가 단순하므로 덧셈과 뺄셈을 먼저 같이 처리합니다. ru, rb는 각각 정수 값으로 나올 것입니다.
158158
{{{#!if ru=(+au)-(+bu), rb=(+ab)-(+bb)
159159
}}}}}}
160
소수점 아래끼리 더한 자릿수가 얼마나 되는지 보기 위해 rb를 문자열로 바꿉니다.
161
{{{#!if this.rb=rb.toString()
162
}}}
163
문자열 길이를 rp로 정의합니다.
164
{{{#!if this.rp=rb.length
165
}}}
166
rb가 음수이면 마이너스 부분을 잘라내어 저장시키고 rp를 다시 정의합니다.
167
{{{#!if rb[0]==45
168
{{{#!if rb=rb.substr(1, rp-1)
169
}}}{{{#!if rp=rb.length
170
}}}}}}
160171
172
161173
{{{#!if ru>0
162174
ru는 정수이므로 0보다 크면 곧 1 이상이며, 1 이상이면 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다.
163
}}}
175
{{{#!if rb>0
176
}}}}}}
164177
{{{#!if ru==0
165178
}}}
166179
{{{#!if ru<0
......