Google – String Decimal Add
给两个string表示实数(带小数点,不是整数),做加法。
[Solution]
和整数一样的解法,分成两部分加就好了
[Note]
split "."的时候一定要转义。
Read full article from Google – String Decimal Add
给两个string表示实数(带小数点,不是整数),做加法。
[Solution]
和整数一样的解法,分成两部分加就好了
[Note]
split "."的时候一定要转义。
public
String decimalAdd(String a, String b) {
if
(a ==
null
|| b ==
null
) {
return
a ==
null
? b : a;
}
String[] sp1 = a.split(
"\\."
);
String[] sp2 = b.split(
"\\."
);
int
remainder =
0
;
int
l = sp1.length >
1
? sp1[
1
].length() -
1
: -
1
;
int
r = sp2.length >
1
? sp2[
1
].length() -
1
: -
1
;
StringBuilder sb =
new
StringBuilder();
while
(l >=
0
|| r >=
0
) {
int
d1 = l >=
0
? sp1[
1
].charAt(l) -
'0'
:
0
;
int
d2 = r >=
0
? sp2[
1
].charAt(r) -
'0'
:
0
;
int
sum = d1 + d2 + remainder;
if
(sum >=
10
) {
sum -=
10
;
remainder =
1
;
}
else
{
remainder =
0
;
}
sb.append(sum);
l--;
r--;
}
if
(sp1.length >
1
|| sp2.length >
1
) {
sb.append(
"."
);
}
l = sp1[
0
].length() -
1
;
r = sp2[
0
].length() -
1
;
while
(l >=
0
|| r >=
0
) {
int
d1 = l >=
0
? sp1[
0
].charAt(l) -
'0'
:
0
;
int
d2 = r >=
0
? sp2[
0
].charAt(r) -
'0'
:
0
;
int
sum = d1 + d2 + remainder;
if
(sum >=
10
) {
sum -=
10
;
remainder =
1
;
}
else
{
remainder =
0
;
}
sb.append(sum);
l--;
r--;
}
if
(remainder !=
0
) {
sb.append(remainder);
}
return
sb.reverse().toString();
}