上传者: jerrysql
|
上传时间: 2021-11-10 10:46:28
|
文件大小: 859KB
|
文件类型: -
一、进制转换
输入
10进制:直接输入,支持负数。
16进制:0x10,不支持负数
浮点数:直接收入,支持负数。
字符:'A',字符必须用两个单引号。
===================================================================================================
二、表达式计算
1.支持大数运算。大数用数组表示,数组大小为1000个元素。最大能计算499的阶层。
大数表示方法: sign,intcount,decimalcount|num[PBigNum_ValueLength]。
sign: 符号。正数:sign=0; 负数:sign=1。
intcount: 整数个数。
decimalcount: 小数个数。
num: __int64数组,元素个数=PBigNum_ValueLength。
举例1: 0,3,0|0,0,0,0,0,0,0,1,2,3代表123。(假设PBigNum_ValueLength=10)
举例2: 1,3,2|0,0,0,0,0,1,2,3,4,5代表-123.45。
举例3: 0,1,0|0,0,0,0,0,0,0,0,0,0代表0。
举例4: 0,1,0|0,0,0,0,0,0,0,0,0,1代表1。
举例5: 0,0,1|0,0,0,0,0,0,0,0,0,1代表0.1。
举例6: 0,0,0|0,0,0,0,0,0,0,0,0,0 此数非法
特点: sign,intcount,decimalcount,num[]均不可能出现负数;sign取值0与1;intcount和decimalcount不可能同时是0。
---------------------------------------------------------------------------------------------------
2.支持四则运算,支持括号,支持负数,支持双精度浮点数double。 支持+-*/。运算数以数组表示,并模拟+-*/,并没有直接调用C/C++当中的+-*/运算符对两个运算数进行运算。
3.支持以下字符串运算:"123+-456","123--456"。不支持以下字符串运算:"123++456","123-+456"。
4.小数点精度20位。
-------------------------------------------------
5.测试用例:
1/6=0.16666666666666666667
3175/6=529.16666666666666666667
1/7=0.14285714285714285714
1+(2)=3
1+(-2)=-1
0xFF+1=256
0xFFFFFFFFFFFFFFFF*0xFFFFFFFFFFFFFFFF=340282366920938463426481119284349108225
-0x123*-0x123=84681
0xFFFFFF+0=16777215
0xFFFFFF*0=00000000
10.569*2.469=26.094861
12.5+13.5=26
12.5/13.5=0.92592592592592592593
56*0=0
(((952.5*400/25.4)*1024*2)/1024/1024)/8=3.662109375
100!=93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
0.7*0.15=0.105
-------------------------------------------------
7.支持函数
1.fac 输入fac(449)。最大参数449。结果有998位。
2.pow