iii 发表于 2024-4-14 15:45:47

落叶高精度表达式计算器v1.1版

落叶高精度表达式计算器v1.1版
   
针对1.0版作了以下更改:
   纠正了开立方程序某一些特殊数精度不够的问题,纠正了自然对数函数中的一个辅助子函数的问题,万位精度自然对数运算时间由1.0版的7秒,变回现在的6秒,
   纠正了乘方运算符和阶乘运算符运算等级定位不准的问题,填加了乘方程序对一些特殊值的判断。纠正了乘方运算小位数,高精度运算过慢的问题,例:123^10000万位精度时过慢的问题。1.0版需要1.5秒,现0.2秒左右。
   取消了原程序中的公式,算式存入功能,用更加强大的预定义变量和赋值语句代替。

1.1版增加了四大功能:详情看帮助!

    1.多次运算结果显示功能,对已运算的内容保持在程序文体框中,方便查看,你可以复制它的内容为你所用,但却不可编缉它!

   
    2.批量处理或计算功能,可以对以分号隔开的各赋值语句,函数定义语句,表达式进行批量处理:
       例:输入1+2;a=3;b=4;c= a*b;c*2;效果如下:
https://bbs.emath.ac.cn/data/attachment/forum/201701/31/094259ngu95p4x0804iswp.png

然后点击计算按钮,效果如下:

https://bbs.emath.ac.cn/data/attachment/forum/201701/31/094345m8s0b80g8rqb0k0g.png

   3.预设了25个变量,变量名为25个小写字母(26个小写字母中的e 除外),配合简单的赋值语句可以应对各种运算,来个简单的例子,详情看帮助!
       例:输入a=5;b=6;c= 7;((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c))√/4 效果如下:
https://bbs.emath.ac.cn/data/attachment/forum/201701/31/094446vs5l64xubshzsrya.png

然后点击计算按钮,效果如下:

https://bbs.emath.ac.cn/data/attachment/forum/201701/31/094514ukxhyd5wywfkyhwk.png
上面的表达式是计算三角形的表面积公式。

4.增加了函数定义功能,支持所有的可以用表达式表达的函数,并且支持中文函数名,
例:定义一个正多面形表面积函数用用,在程序文本框中输入:
正多边形表面积(a,n)=n*a^2*cos(π/n)/(4*sin(π/n));    这里a代表边长,n代表有几个边,效果如下:
https://bbs.emath.ac.cn/data/attachment/forum/201701/31/094550d3g7ysj5g2s3hi2a.png

然后点击计算按钮,函数加入系统完成,可以在自定义函数组合框选定该函数运算:
然后输入a=5;n=21;正多边形表面积(a,n);或直按输入:正多边形表面积(5,21);效果如下:

https://bbs.emath.ac.cn/data/attachment/forum/201701/31/094625zi8hpncoec8xljwc.png


下载地址:落叶高精度表达式计算器v1.1版

oasuoxi 发表于 2024-4-14 15:45:59

非常不错,建议把点键输入和表达式输入分开,弄成两种输入模式。在点键模式中√代表根号,根号3是根据点击顺序3、√来计算,类似微软的输入顺序。但在表达式输入时,则是按正常顺序写√3。你目前计算器就是这两种模式混淆了,导致表达式也成了倒着根号。

还有变量不能只限定为一个字母,应该在栈上建立一个变量表,专门存放变量名。

https://bbs.emath.ac.cn/data/attachment/forum/201701/31/111542xrqsssvsnnntrlnv.png
sqrt2+sqrt3
https://bbs.emath.ac.cn/data/attachment/forum/201701/31/111748e4wyksqupabuk1pw.png
建议增加sqrt()开方函数,方便用户键盘录入根号。

油条大哥大 发表于 2024-4-14 15:46:41

好的,谢谢,这些都是我没想到的,下版改正!!!
第一个问题可以快速解决,第二个问题我先想想!
我会为每一个特殊且难输入的运算符提供对应的函数。方便键盘输入。
变量方面准备增加自定义变量语句。

azanuvahejih 发表于 2024-4-14 15:47:34

正好试试自定义函数功能:sqrt(x)=x√;
sqrt(2) = 1.4142135623730950488016887242097
Natural√ = 1.6487212707001281468486507878142
sqrt(Natural) = 1.6487212707001281468486507878142
a=5
b=6
c=7
((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c))√/4 = 1.4696938456699068589183704448235E1
sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c))/4 = 1.4696938456699068589183704448235E1
好了,第一个问题初步解决!下次再从内部代码解决。
其它如度,分,秒也可以用你喜欢的函数名代替。也可对你不喜欢的函数名重新定义:
如:开立方(x)=cuberoot(x);
cuberoot(Natural) = 1.3956124250860895286281253196026
开立方(Natural) = 1.3956124250860895286281253196026

如果你不介意变量名后有一个"()",自定义变量现也可简单实现,如:mytemp1()=0;mytemp2()=0;好了,两个函数形式的变量已定义,
mytemp2()=8;
mytemp1()=9;
菱形周长(mytemp2(),mytemp1()) = 2.4083189157584590960256482060757E1
菱形周长(8,9) = 2.4083189157584590960256482060757E1
好了,现在有了两个非常难看的变量,变量的内容也是长期保存的,只到下一次赋值。

ipeuric 发表于 2024-4-14 15:47:42

还有Natural这名字不好,应该用exp(1)表示自然对数e,要与标准一致。

ouukucakac 发表于 2024-4-14 15:48:39

64位系统无法运行,可能是COMDLG32.OCX版本问题。
页: [1]
查看完整版本: 落叶高精度表达式计算器v1.1版