原始版本的大数相乘地址:http://www.cnblogs.com/life91/p/3389890.html
在原来的版本中,整数相乘与小数相乘是分开的。其中,在计算小数时,需要将数值与小数点进行分割。在本次版本中,整数和小数在一次计算中进行处理。
本版本中对原始版本中的几个BUG进行处理:
1. 小数末尾出现的无效0。例如,”0.123400” -> “0.1234”
2. 对于两个均是小于0的小数相乘,需要在结果中的整数部分存放’0’。例如,0.12*0.4 = 0.048
参考小数相乘模型:
2 . 5
× 1 . 2
---------------- ---- 数值上标数值表示进位值
51 0 ---- 被乘数中小数点需要滤过
---- 乘数中小数点的计算序列
2 5
-----------------
31 0 0 ---- 计算结果中小数点的滤过
在计算过程中,被乘数中出现小数点需要滤过的只是本次计算,再次计算整数位;而乘数需要滤过的是与整个被乘数的计算过程。在结果存放过程中,如果当前位为小数点,则仅仅向前进一位,即将结果存放在整数部分。
1 for ( i = 0; lhs[i] != '