代码:
依赖:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency>
import org.apache.commons.lang3.StringUtils; /** * @description: * @create: 2019/04/29 13:53 */ public class SpringOperation { /** * 两个大数相乘 * * @param num1 * @param num2 * @return */ public static String multiply(String num1, String num2) { //把字符串转成char数组 char chars1[] = num1.toCharArray(); char chars2[] = num2.toCharArray(); //声明存放结果和两个乘积的容器 int result[] = new int[chars1.length + chars2.length]; int n1[] = new int[chars1.length]; int n2[] = new int[chars2.length]; //把char转换成int数组。 for (int i = 0; i < chars1.length; i++) { n1[i] = chars1[i] - '0'; } for (int j = 0; j < chars2.length; j++) { n2[j] = chars2[j] - '0'; } //逐个相乘 for (int i = 0; i < chars1.length; i++) { for (int j = 0; j < chars2.length; j++) { result[i + j] += n1[i] * n2[j]; } } //从后往前满十进位 for (int i = result.length - 1; i > 0; i--) { result[i - 1] += result[i] / 10; result[i] = result[i] % 10; } //转成string并返回 String resultStr = ""; for (int i = 0; i < result.length - 1; i++) { resultStr += "" + result[i]; } return resultStr; } /** * 用字符串模拟两个大数相加 * <a href="http://home.cnblogs.com/u/309701/" target="_blank">@param</a> n1 加数1 * <a href="http://home.cnblogs.com/u/309701/" target="_blank">@param</a> n2 加数2 * <a href="http://home.cnblogs.com/u/69429/" target="_blank">@return</a> 相加结果 */ public static String bigNumberPlus(String a, String b) { int lenA = a.length(); int lenB = b.length(); if (lenA > lenB) { b = StringUtils.leftPad(b, lenA, "0"); } else { a = StringUtils.leftPad(a, lenB, "0"); } int[] arrC = new int[a.length() + 1]; for (int i = a.length() - 1; i >= 0; i--) { int ai = Integer.parseInt(a.charAt(i) + ""); int bi = Integer.parseInt(b.charAt(i) + ""); int ci = arrC[i + 1]; int t = ai + bi + ci; arrC[i + 1] = t % 10; arrC[i] = t / 10; } StringBuffer res = new StringBuffer(); for (int i = 0; i < arrC.length; i++) { if (i == 0 && arrC[i] == 0) continue; res.append(arrC[i]); } return res.toString(); } public static void main(String[] args) { System.out.println("乘法3*4="+multiply("3","4")); System.out.println("加法3+4="+bigNumberPlus("3","4")); } }