Advertisement

Java 精度无损加减乘除工具类

  • 5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
简介:提供精确计算功能的Java工具类,支持加、减、乘、除四则运算,确保财务和科学计算中的数值精度不受损失。 这段文字描述了一个包含基本数学运算功能的Java工具类。该类名为`Calculation`,位于包`cn.cisdom.base.utils`下,并使用了BigDecimal进行精确计算以及DecimalFormat来格式化数值以保留两位小数。 以下是重写后的代码及说明: ```java package cn.cisdom.base.utils; import java.math.BigDecimal; import java.text.DecimalFormat; public class Calculation { public static final DecimalFormat df = new DecimalFormat(######0.00); /** * 该方法用于将数值保留两位小数。 * * @param value 需要格式化的数字 * @return 格式化后的字符串形式的数字 */ public static String format2point(Number value) { return df.format(value); } /** * 提供精确加法运算。 * * @param value1 数值1 * @param value2 数值2 * @return 两个数值相加的结果 */ public static Double add(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.add(b2).doubleValue(); } /** * 提供精确减法运算。 * * @param value1 被减数 * @param value2 减数 * @return 两个数值相减的结果 */ public static Double sub(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.subtract(b2).doubleValue(); } /** * 提供精确乘法运算。 * * @param value1 被乘数 * @param value2 乘数 * @return 两个数值相乘的结果 */ public static Double mul(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.multiply(b2).doubleValue(); } /** * 提供精确除法运算。 * * @param value1 被除数 * @param value2 除数 * @return 两个数值相除的结果,注意:如果被除数为0,则返回值未定义。 */ public static Double div(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.divide(b2).doubleValue(); } // 主函数用于测试 public static void main(String[] args) { Double aDouble=Calculation.add(56.9, 1.67); System.out.println(aDouble); Double bDouble = Calculation.sub(99.2,aDouble); System.out.println(bDouble); } } ``` 代码中包含了五个主要方法:`format2point()`用于格式化数值保留两位小数;`add()`, `sub()`, 和 `mul()` 分别实现了加法、减法和乘法运算,而`div()`则提供了除法功能。这些函数都使用了BigDecimal类来确保计算的准确性,并且所有返回值都被转换为double类型以方便后续操作或展示。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Java
    优质
    简介:提供精确计算功能的Java工具类,支持加、减、乘、除四则运算,确保财务和科学计算中的数值精度不受损失。 这段文字描述了一个包含基本数学运算功能的Java工具类。该类名为`Calculation`,位于包`cn.cisdom.base.utils`下,并使用了BigDecimal进行精确计算以及DecimalFormat来格式化数值以保留两位小数。 以下是重写后的代码及说明: ```java package cn.cisdom.base.utils; import java.math.BigDecimal; import java.text.DecimalFormat; public class Calculation { public static final DecimalFormat df = new DecimalFormat(######0.00); /** * 该方法用于将数值保留两位小数。 * * @param value 需要格式化的数字 * @return 格式化后的字符串形式的数字 */ public static String format2point(Number value) { return df.format(value); } /** * 提供精确加法运算。 * * @param value1 数值1 * @param value2 数值2 * @return 两个数值相加的结果 */ public static Double add(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.add(b2).doubleValue(); } /** * 提供精确减法运算。 * * @param value1 被减数 * @param value2 减数 * @return 两个数值相减的结果 */ public static Double sub(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.subtract(b2).doubleValue(); } /** * 提供精确乘法运算。 * * @param value1 被乘数 * @param value2 乘数 * @return 两个数值相乘的结果 */ public static Double mul(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.multiply(b2).doubleValue(); } /** * 提供精确除法运算。 * * @param value1 被除数 * @param value2 除数 * @return 两个数值相除的结果,注意:如果被除数为0,则返回值未定义。 */ public static Double div(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.divide(b2).doubleValue(); } // 主函数用于测试 public static void main(String[] args) { Double aDouble=Calculation.add(56.9, 1.67); System.out.println(aDouble); Double bDouble = Calculation.sub(99.2,aDouble); System.out.println(bDouble); } } ``` 代码中包含了五个主要方法:`format2point()`用于格式化数值保留两位小数;`add()`, `sub()`, 和 `mul()` 分别实现了加法、减法和乘法运算,而`div()`则提供了除法功能。这些函数都使用了BigDecimal类来确保计算的准确性,并且所有返回值都被转换为double类型以方便后续操作或展示。
  • JS中运算的失及解决方案
    优质
    本文探讨了JavaScript中进行数值计算时出现的精度问题,并提供了有效的解决策略以确保计算结果的准确性。 在JavaScript中进行小数的加减乘除运算时,有时结果会带有很长的小数部分,这使得计算过程变得复杂且可能影响精度。这是因为JavaScript中的浮点数是以二进制形式存储和处理的。 例如: ```javascript /** * 加法运算,避免数据相加后产生多位小数和计算精度损失。 * @param num1 - 被加数 * @param num2 - 加数 */ function numAdd(num1, num2) { var baseNum, baseNum1, baseNum2; try { // 进行具体实现的代码处理,此处省略细节 ``` 为解决这一问题,可以使用特定的方法来提高计算精度。例如,在上述示例中,`numAdd` 函数尝试通过某种方式规避浮点数运算中的精度损失问题。
  • 运算的-C++程序
    优质
    本C++程序专注于实现高精度的数学运算,包括加、减、乘、除四则运算,适用于需要极高计算精度的应用场景。 使用C++语言进行高精度的加减乘除运算可以用于简单的课程设计项目。
  • 运算的-C++程序
    优质
    本C++程序提供高精度的数学运算功能,涵盖加、减、乘、除四则运算,适用于需要处理大数计算的应用场景。 使用C++语言进行高精度的加减乘除运算可以用于简单的课程设计项目。
  • 运算的-C++程序
    优质
    本C++程序提供高效、精确的数学计算功能,支持加减乘除等基本运算,适用于需要高性能数值处理的应用场景。 使用C++语言可以进行高精度的加减乘除运算,适合用于简单的课程设计项目。
  • C语言实现的高与阶计算
    优质
    本项目使用C语言开发,实现了高精度整数的加、减、乘、除及阶乘运算功能,适用于需要进行大数字精确计算的场景。 这段文字描述了一个用C语言编写的高精度算法程序。该程序包含以下功能: - 高精度加法 - 高精度减法 - 高精度乘法 - 高精度除以低精度 - 高精度除以高精度 - 高精度阶乘
  • 计算(、高、高
    优质
    本工具提供高精度数值运算功能,涵盖加法、减法及高精度数与低精度数相乘和两个高精度数相乘,确保复杂计算的准确性。 高精度运算(包括加减法、高精度乘低精度以及高精度乘高精度),适合用C语言实现,非常适合新手学习。代码中有大量注释帮助理解,欢迎大家下载使用!
  • Java二进制运算器(
    优质
    Java二进制运算器是一款基于Java编程语言开发的小工具,专为进行二进制数的基本算术操作设计。用户可轻松执行加法、减法、乘法及除法等运算任务,适用于学习与专业计算场景。 Java二进制运算器(加、减、乘、除)
  • Java中的泛型运算(
    优质
    本文探讨了在Java编程语言中实现泛型数据类型的数学运算,特别是加、减、乘、除四种基本操作,并提供了相关代码示例。 这段文字描述了一个使用JAVA实现的泛型编程示例,分为两部分:第一部分是创建并实例化一个泛型类,并演示了相加操作的结果;第二部分允许用户输入0到4之间的数字来选择进行加减乘除运算或退出程序,然后输入两个需要计算的数以获取运算结果及返回类型。代码能够正常运行。
  • C++高运算模板(支持和取模)
    优质
    本库提供高效C++模板类,实现大整数及浮点数的高精度算术运算,涵盖加、减、乘、除及取模操作,适用于需精准计算的复杂项目。 C++竞赛高精度模板 优点:包含四则运算;使用vector替代传统数组。 缺点:乘法算法为O(N^2)复杂度,并未采用FFT算法;某些编辑器可能无法支持资源中定义的常量,需手动创建解决编译错误问题;没有实现运算符重载。