• 计算两个字符串的减法运算


     1  /**
     2      * 两个大数相减,默认没有符号位,且都为正数
     3      *
     4      * @param a
     5      * @param b
     6      * @return
     7      */
     8     public static String bigDigitalSub(String a, String b) {
     9         //翻转字符串并转化成数组
    10         char[] aArray = new StringBuilder(a).reverse().toString().toCharArray();
    11         char[] bArray = new StringBuilder(b).reverse().toString().toCharArray();
    12         int aLength = aArray.length;
    13         int bLength = bArray.length;
    14         //找到最大的位数,两个整数的差的位数小于等于两个整数中的最大位数
    15         int maxLength = aLength > bLength ? aLength : bLength;
    16         int[] result = new int[maxLength];
    17         //判断结果符号
    18         char sign = '+';
    19         if (aLength < bLength) sign = '-';
    20         else if (aLength == bLength) {
    21             int i = maxLength - 1;
    22             while (i > 0 && aArray[i] == bArray[i])
    23                 i--;
    24             if (aArray[i] < bArray[i])
    25                 sign = '-';
    26         }
    27         //开始计算结果集
    28         for (int i = 0; i < maxLength; i++) {
    29             int aInt = i < aLength ? aArray[i] - '0' : 0;
    30             int bInt = i < bLength ? bArray[i] - '0' : 0;
    31             if (sign == '-') result[i] = bInt - aInt;
    32             else result[i] = aInt - bInt;
    33         }
    34         //处理结果集,如果结果集中的某一位小于0,则向高位借位,然后将本位加10
    35         for (int i = 0; i < maxLength - 1; i++) {
    36             if (result[i] < 0) {
    37                 result[i + 1] -= 1;
    38                 result[i] += 10;
    39             }
    40         }
    41 
    42         //处理结果集,转化成真正结果
    43         StringBuffer realResult = new StringBuffer();
    44         if (sign == '-') realResult.append('-');
    45         boolean isBeginning = true;
    46         for (int i = maxLength - 1; i >= 0; i--) {
    47             if (result[i] == 0 && isBeginning) continue;
    48             else isBeginning = false;
    49             realResult.append(result[i]);
    50         }
    51         if (realResult.toString().equals("")) realResult.append('0');
    52         return realResult.toString();
    53     }
  • 相关阅读:
    SOCKET 3次握手
    NativeXml帮助(四) http://gaoyanan.blog.sohu.com/162725319.html
    DELPHI下的SOCK编程(转)
    socket 编程入门教程(三)TCP原理:5、TCP的三次握手(threeway handshake)
    计算机术语的英文缩写
    提高查询速度方法总结
    复制表结构的通用存储过程
    QQ盗号工具代码(破解键盘锁)
    使用VB将SQL SERVER 的脚本导出
    2007第四周 关于逛街
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7753950.html
Copyright © 2020-2023  润新知