Skip to content

本项目是一种计算器的数学函数库,去除了与 GUI 界面相关的内容,只暴露了对外接口。可以便于一些非计算器,但也需要进行精确计算的项目来使用。

License

wangpai-calculator/mathlab-fx_java

Repository files navigation

多功能计算器数学函数库

  • 此代码是作者出于兴趣爱好自己编写的。转载请注明。

  • 作者的邮箱:contactwangpai@163.com


分支 M # 版本 M.2.0 支持的功能:

  • 本项目原本是一种供笔者自研计算器使用的数学函数库。现在已从原项目中分离出来,去除了与 GUI 界面相关的内容,只暴露了对外接口。本项目也可以便于一些非计算器,但也需要进行精确计算的项目来使用。

    本项目的功能分为单次运算和表达式运算。

  • 对于单次运算:

    1. 支持有理数的四则运算,运算无舍入误差

    2. 支持大整数的求余、求整数商、乘方、求公倍数、求公约数运算

    3. 支持分数的约分、整数指数乘方、取整、大小比较运算

    4. 支持将有理数转化为 double 类型的浮点数,支持生成给定范围内有理数的随机数

    5. 支持使用含小数点的字符串形式的小数

    6. 支持大整数的阶乘、排列数、组合数运算

  • 对于表达式运算:

    1. 操作数支持多位运算。一个操作数可以是十位数或者更高位数的数

    2. 操作数支持小数点、负数,运算结果支持显示小数、分数。

    3. 表达式可以含多个操作数、多个运算符,还可以带括号

    4. 对输入表达式提供实时自动语法检查与错误定位,并支持检查后的修改

    5. 对输入无误的表达式进行实时自动无损计算,无运算累计误差,并可选显示详细的计算过程


本次更新介绍

——2022年10月11日

本次更新介绍:

  本工程是在本分支的上一版本的基础之上进行的升级。

  相对于版本 M.1.0,本版本 M.2.0 的改进主要有:

  • 增加了一个新模块 externally-exposed。此模块不包含任何对本项目自身有实际有用的代码。此模块是一种对外暴露、含本项目全部必要 Maven 依赖的一个模块。如果希望只通过一个依赖项就可以包含本项目的所有依赖,可以选择此模块依赖
  • 新增了阶乘、排列数、组合数计算
  • 增加了小于、大于、取整、随机数方法
  • 将 Figure 类进行了重构优化。将其内部分为小整数和大整数以大大提高运算效率。按其它项目的运行结果来看,这样做大约至少使运算时间至减少为原来的 1/3
  • 将异常进行了归类,分为检查型和非检查型
  • 使用了自研的“大整数相除防溢出算法”,修复了有理数转化为 double 类型时的精度损失问题
  • 将各模块名进行了改动

  本版本的已知不足与预想的改进方案:

  • 本版暂无

  未来版本可能会实现的功能:

  • 本版暂无

  • 本项目使用的开发环境:
    • JDK 17.0.1 2021-10-19
    • Maven 3.8.3
    • IntelliJ IDEA 2022.2.1 (Ultimate Edition)

  • 总计:5447

  • Java 代码:5012

  • 文本语言代码:435

    • XML:435

  • 程序屏幕输入示例(供复制、自行测试):2334.623*6345-234/1234+234*(254-45.242)=

  • 程序输出结果:

    CalculationResultOutput(state=INIT, stateMsg=, promptMsg=, calculationProcess=----------------------
    
    【1】下面是计算过程:
    
       2334.623 X 6345 - 234 / 1234 + 234 X (254 - 45.242)
    
    = [2962636587 / 200] - 234 / 1234 + 234 X (254 - 45.242)
    
    = [2962636587 / 200] - [117 / 617] + 234 X (254 - 45.242)
    
    = [1827946750779 / 123400] + 234 X (254 - 45.242)
    
    = [1827946750779 / 123400] + 234 X [104379 / 500]
    
    = [1827946750779 / 123400] + [12212343 / 250]
    
    = [9169873816419 / 617000]
    
    = 1.4862032117372772E7, result=[9169873816419/617000])

About

本项目是一种计算器的数学函数库,去除了与 GUI 界面相关的内容,只暴露了对外接口。可以便于一些非计算器,但也需要进行精确计算的项目来使用。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages