CONST enum cConstIndex //常量序号
{
Const_e, //欧拉常数e
Const_pi, //圆周率π
//可以此处添加新的数学常量序号
};
CONST struct //常量结构
{
PTSTR ptzConstName;
CONST DOUBLE fData;
}
c_sConstant[] = //常量名称和常量数值列表
{
{TEXT("e"), 2.71828182845904523536}, //欧拉常数e
{TEXT("pi"), 3.14159265358979323846}, //圆周率π
//可在此添加新的数学常量名称和数值
};
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
CONST enum cFuncIndex //函数序号
{
Func_abs, //绝对值函数
Func_arccos, //反余弦函数
Func_arcctg, //反余切函数
Func_arcsin, //反正弦函数
Func_arctan, //反正切函数
Func_ceil, //向上取整
Func_cos, //余弦函数
Func_ctg, //余切函数
Func_deg, //弧度转角度
Func_exp, //e的幂函数
Func_floor, //向下取整
Func_hypot, //直角三角形弦长
Func_lg, //10的对数
Func_ln, //自然对数
Func_log, //对数函数
Func_mod, //余数函数
Func_pow, //幂函数
Func_pow10, //10幂函数
Func_rad, //角度转弧度
Func_rand, //随机函数
Func_sin, //正弦函数
Func_sqrt, //开方函数
Func_tan, //正切函数
//可在此添加新的数学函数序号
};
CONST TCHAR c_sFuncName[][16] = //函数名列表
{
TEXT("abs"), //绝对值函数
TEXT("arccos"), //反余弦函数
TEXT("arcctg"), //反余切函数
TEXT("arcsin"), //反正弦函数
TEXT("arctan"), //反正切函数
TEXT("ceil"), //向上取整
TEXT("cos"), //余弦函数
TEXT("ctg"), //余切函数
TEXT("deg"), //弧度转角度
TEXT("exp"), //e的幂函数
TEXT("floor"), //向下取整
TEXT("hypot"), //直角三角形弦长
TEXT("lg"), //10的对数
TEXT("ln"), //自然对数
TEXT("log"), //对数函数
TEXT("mod"), //取余数函数
TEXT("pow"), //幂函数
TEXT("pow10"), //10的幂函数
TEXT("rad"), //角度转弧度
TEXT("rand"), //随机函数
TEXT("sin"), //正弦函数
TEXT("sqrt"), //开方函数
TEXT("tan"), //正切函数
//可在此添加新的数学函数
//添加新的数学函数后,再在下在的函数 CalcFunctionExpression 中添加它的功能
};
数学表达式计算命令,By Lxl1638
使用方法: Calculator.EXE {代数表达式}#小数位数(默认6位最多16位)
支持的运算符号: 加"+"、减"-"、乘"*"、除"/"、幂"^"和括号解释
支持的数学常数: e 表示欧拉常数, pi 表示圆周率π
支持的数学函数: 共计23个
abs(a) 绝对值函数
arccos(a) 反余弦函数
arcctg(a) 反余切函数
arcsin(a) 反正弦函数
arctan(a) 反正切函数
ceil(a) 向上取整
cos(a) 余弦函数
ctg(a) 余切函数
deg(a) 弧度转角度
exp(a) e的幂函数
floor(a) 向下取整
hypot(a,b) 直角三角形弦长
lg(a) 10的对数
ln(a) 自然对数
log(a.b) 对数函数
mod(a,b) 余数函数
pow(a,b) 幂函数
pow10(a) 10幂函数
rad(a) 角度转弧度
rand(a) 随机函数
sin(a) 正弦函数
sqrt(a) 开方函数
tan(a) 正切函数
使用示例: Calculator.EXE 2*arcsin(sin(pi/2))#8
4.33 KB, 下载次数: 275, 下载积分: 无忧币 -2
76.38 KB, 下载次数: 254, 下载积分: 无忧币 -2
原帖由 freesoft00 于 2010-11-12 01:24 发表
是否支持十六进制数的计算,十进制十六进制的相互转换?
一直想找一个好点的计算器,找不到,数据恢复中用到没有好用的。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=57675&page=260#pid2062761
原帖由 freesoft00 于 2010-11-12 11:47 发表
一些涉及到的计算:
扇区=簇×簇大小
字节数=扇区数×512(非512字节的乘以实际数)
分区大小=字节数÷2的30次方 (单位G)
分区大小=扇区总数×512÷1204÷1024÷1024
根目录的地址=保留扇区+F ...
原帖由 lxl1638 于 2010-11-11 23:06 发表
计算功能比 wtcmd 强多了。
理论上支持无穷表达式计算,支持错误表达式说明。
功能如下:
数学表达式计算命令,By Lxl1638
使用方法:
Calculator.EXE {代数表达式} #小数位数(默认4位最多6位)
...
原帖由 freesoft00 于 2010-11-12 11:49 发表
涉及到的计算并不是太复杂,希望计算过程有一个日志,能下是每一步,这样可以复查计算是否有误。
命令行程序或者带界面的程序都可以。
windows自带的也可以计算,但是没有日志框显示每一步,计算一个说不定 ...
原帖由 shoulea 于 2010-11-14 00:04 发表
老大不是专门冲着我来的吧,但愿不是,那样不太好。疑问:小数为什么要限制为6位呢?double可以有15个有效数字,不能表示出的数可以用中的DBL_EPSILON或中的numeric_limits::epsilon()表示的啊。
原帖由 lxl1638 于 2010-11-14 00:35 发表
不会,这仅仅是测试,这个工具不会加入执行脚本功能,
实际上就现行的代码加入执行脚本功能是很容易的事了:
1、加入一条 Load 命令载入脚本,按流程执行;
2、构建变量系统,内置若干个变量,如 double m ...
原帖由 shoulea 于 2010-11-14 10:50 发表
将三角函数等等强大功能加到pecmd里去就没必要,毕竟谁会用pecmd/wtcmd做数学计算,实际wtcmd最后把calcexpr中的许多功能都砍掉了,只保留了+ - * / div mod [取整] (括号)几种简单功能,所以不妨将一些简单 ...
同诸多网友一样,受益于VCKBASE,觉得应为他做点贡献了,于是做了这么一个基于表达式求值的科学计算器与各位爱好编程的朋友分享。
如您所知,这方面的程序很多,看过ZF.Yi的相关作品,也见过黄江峰的相关程序,但我觉得我的计算类有不同于二位的特色,如计算结果的有效位较长(16位);支持不严格的表达式输入(如cos(23)*sin(34)与cos(23)*sin(34与cos23*sin34等价);支持四种进制的数在一个表达式中同时出现的进制混合运算(除十进制外的各进制数不限于整数,如12d.3axh,xh是我的计算类所能识别的十六进制数的标识符);且程序做得也比较精细(如制作了鼠标键盘、窗口跟随、计算历史查看等),这才使我觉得拙作不致于滥竽充数,相信网友们看了会另有收获的。
代码更新说明:
有的网友发邮件给我指出了其中的不足之处,如没有处理好连加连减或加减号混合出现的情况(如:1++++1,1----1,--+-+-+1-+-++++---1)。我也发现了这个问题,所以重写了其中的MultiE(CString *strExp)计算函数。同时应一些网友的议建,加入了对结果的十六、八、二进制转换(以前只能在计算过程中转换)
支持四种进制的数在一个表达式中同时出现的进制混合运算(除十进制外的各进制数不限于整数,如12d.3axh,xh是我的计算类所能识别的十六进制数的标识符、支持计算历史查看等,加入了对结果的十六、八、二进制转换(以前只能在计算过程中转换)
原帖由 StarsunYzL 于 2010-11-16 04:29 发表
支持!如果不十分追求程序大小的话,建议用Boost.Spirit来作语法分析,可以轻松的实现更复杂更强大的功能,而且编码量也小,算个四则表达式估计也就50行左右的代码量。
欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) | Powered by Discuz! X3.3 |