java实现超大数加减乘除四则运算(包含符号和小数)

一、概述

该算法由本人亲自实现,测试多次,未发现bug,可放心使用。大数的四则运算,利用数组存储数字,按位计算,基于java自带的四则运算。小数计算会转换为整数,再交由系统计算,可得到精确的小数计算。除法,内部自动扩充到>=16位小数,可改代码修改之。

优点:

1.超大数计算,可计算超过long类型,double类型的数据,最大长度不能超过int最大值2147483647,也就是21亿位十进制数字表示的数值。

2.精确小数计算,由于内部转换成整数,再交给cpu运算,可保证运算无误!

缺点:

1.运算速较自带的cpu慢

二、代码

工程源码可见:

部分核心代码可见上一篇博文。

三、运行

请输入第一个数:
0.1
请输入第二个数:
1.2
大数加法计算:0.1+1.2=1.3,cost time:0.396253ms
加法直接计算:1.3
大数减法计算:0.1-1.2=-1.1,cost time:0.327ms
减法直接计算:-1.0999999999999999
大数乘法计算:0.1*1.2=0.12,cost time:0.494589ms
乘法直接计算:0.12
大数除法计算:0.1/1.2=0.08333333333333333,cost time:2.716993ms
除法直接计算:0.08333333333333334
退出输入q,否则继续

请输入第一个数:
-3
请输入第二个数:
2.5
大数加法计算:-3+2.5=-0.5,cost time:0.15413ms
加法直接计算:-0.5
大数减法计算:-3-2.5=-5.5,cost time:0.086134ms
减法直接计算:-5.5
大数乘法计算:-3*2.5=-7.5,cost time:0.082439ms
乘法直接计算:-7.5
大数除法计算:-3/2.5=-1.2,cost time:0.517707ms
除法直接计算:-1.2
退出输入q,否则继续

请输入第一个数:
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.55
请输入第二个数:
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.00
大数加法计算:1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.55+1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.00
=2469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780.55,cost time:0.521923ms
加法直接计算:2.4691357802469134E99
大数减法计算:1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.55-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.00=0.55,cost time:0.670347ms
减法直接计算:0.0
大数乘法计算:1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.55*1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.00
=1524157875323883675049535156256668194500838287337600975522511812231126352691000152415888766956267752241275427206980753968983396521726871764655540387713839359896212468102104100021458695323270698064439.5000,cost time:3.161342ms
乘法直接计算:1.5241578753238836E198
大数除法计算:1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.55/1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.00=1,cost time:17.875937ms
除法直接计算:1.0
退出输入q,否则继续

相关推荐