k*********6 发帖数: 738 | | w*******s 发帖数: 138 | 2 import java.math.BigInteger
BigInteger result = new BigInteger("123").subtract(new BigInteger("456"));
【在 k*********6 的大作中提到】 : 多谢!
| p*****2 发帖数: 21240 | 3 #(apply + %&)
可以支持多个数的相加 | l*n 发帖数: 529 | 4 无聊写了个。a、b都是正数,其他符号的组合可以另写个wrapper函数。
String subtract(String a, String b) {
boolean minus = false;
if (b.length() > a.length() || b.length() == a.length()
&& a.compareTo(b) < 0)
minus = true;
if (minus) {
String tmp = a;
a = b;
b = tmp;
}
int alen = a.length();
int blen = b.length();
StringBuilder sb = new StringBuilder(
new String(new char[a.length()]).replace('\0', '0'));
int carry = 0;
for (int i = 0; i < a.length(); i++) {
int x = a.charAt(alen - i - 1) - '0' + carry;
int y = blen - i - 1 < 0 ? 0 : b.charAt(blen - i - 1) - '0';
if (x < y) {
carry = -1;
sb.setCharAt(alen - i - 1, (char) (10 + x - y + '0'));
} else {
carry = 0;
sb.setCharAt(alen - i - 1, (char) (x - y + '0'));
}
}
while (sb.charAt(0) == '0')
sb.deleteCharAt(0);
return minus ? "-" + sb.toString() : sb.toString();
}
【在 k*********6 的大作中提到】 : 多谢!
| k*********6 发帖数: 738 | |
|