源文件Arith.java:
import java.math.BigDecimal;
/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 确的浮点数运算,包括加减乘除和四舍五入。
*/
public class Arith{
//默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
//这个类不能实例化
private Arith(){
}
/**
* 提供精确的加法运算。
* @param v1 被加数
* @param v2 加数
* @return 两个参数的和
*/
public static double add(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double sub(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
/**
* 提供精确的乘法运算。
* @param v1 被乘数
* @param v2 乘数
* @return 两个参数的积
*/
public static double mul(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @return 两个参数的商
*/
public static double div(double v1,double v2){
return div(v1,v2,DEF_DIV_SCALE);
}
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static double div(double v1,double v2,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精确的小数位四舍五入处理。
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double v,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
};
分享到:
相关推荐
- `BigDecimal`:Java内置的高精度浮点数类,用于进行精确的数学计算,避免浮点数运算中的精度问题。 3. **数据库交互**: - `JDBC`(Java Database Connectivity):Java标准API,用于与各种数据库进行交互,...
可能包含一个主类,负责整体流程控制,以及辅助类如`Calculator`,用于实现具体的计算逻辑。 8. **测试**:确保程序对各种输入都能正确处理,包括边界条件和异常情况,通常需要编写单元测试或集成测试。 通过学习...
需要注意的是,浮点数运算可能会有精度损失,因为计算机无法精确表示所有十进制小数。 在实现这个计算器时,程序设计的基本结构会包括输入解析、运算逻辑和结果输出三个主要部分。输入解析通常会涉及字符串的处理,...
`ArithUtil.java`:这个名字暗示这可能是一个数学运算工具类,通常用于提供高效的数学计算或复杂的算法实现。可能包含如复利计算、利率转换为月利率等辅助函数。例如: 1. `convertAnnualRateToMonthly(double ...
3)小数运算:支持浮点数运算,提供精确的计算结果。 4)辅助功能:如清零、退格、查看历史记录等。 1.2.2 用户界面设计 用户界面应简洁明了,包含数字按键0-9、运算符键(+、-、*、/、=)、小数点、清除键(C)、...
Java语言中的位运算符是编程中的一个重要组成部分,尤其是在处理二进制数据或者进行高效计算时。在Java中,"&"符号被...通过学习和实践,开发者能够编写出更加高效和精确的代码,特别是在处理底层数据结构和算法时。
Java实现需要进行复杂数学运算,可能需要用到`Complex`类。 在给定的文件中,`CirclePI.java`可能是实现了上述某一种或几种方法的Java代码。同时,`Java.jpg`可能是一个辅助图片,展示了算法的示意图或者运行结果。...
首先,`BigDecimal`是Java中的一个核心类,用于进行精确的浮点数运算。在处理金钱和贷款计算时,由于浮点数运算可能存在精度问题,使用`BigDecimal`可以避免因四舍五入导致的误差,确保计算结果的准确性。例如,在...
例如,在百度地图或Google地图API开发中,可以使用这样的工具类来辅助计算用户的位置信息,或者根据起点、目的地和行驶方向计算路径。 由于误差极小,可以忽略,这意味着开发者在编写算法时已经考虑到了地球的曲率...
- 在处理小数参与的运算时,为确保精确性,使用了`java.math.BigDecimal`类。这个类提供高精度的数学运算,避免了浮点数运算的不精确性。例如,使用`multiply()`方法进行乘法运算,并通过`doubleValue()`获取结果的...
在实际开发中,我们可能需要编写这样的辅助类来实现特定的业务需求。 总的来说,理解和熟练运用BigDecimal是每个Java开发者必备的技能之一,特别是在处理货币计算、财务计算等场景时,能够避免因为浮点数精度问题...
9. **复数运算**:尽管复数在物理和工程领域广泛应用,Java的`java.math.Complex`类提供了复数的运算支持。 10. **并行计算**:随着多核处理器的普及,利用Java的并发API(如`ExecutorService`和`Future`)进行数值...
1. **Java编程基础**:整个系统基于Java语言构建,这需要开发者具备扎实的Java语法基础,包括类、对象、接口、继承、多态等面向对象编程概念。同时,理解异常处理、输入输出流、数据类型转换等也是必要的。 2. **...
- 许多编程语言提供了内置的高精度库,如Python的`decimal`模块,Java的`BigInteger`类等,它们已经实现了高效的高精度运算。 - 对于C语言,可以使用GMP(GNU Multiple Precision Arithmetic Library)这样的第三...
java.math包提供了用于执行精确算术运算的大数和高精度数值类。 #### 23. Java标准类库 - **选项解析**: - A:java.1ang包包含了Object、Class、System、String和Thread等类。 - B:System类提供了标准输入输出...
Java提供了`BigInteger`类来支持大整数运算,它允许进行任意精度的算术计算,包括加法、减法、乘法、除法以及更复杂的数学函数如正弦、余弦、正切和余切等。`BigInteger`类是Java的`java.math`包的一部分,设计用于...
其他非公开类(非内部类)可以有多个,它们可以作为主要类的辅助类。 2. Java中没有`goto`关键字,这与C++和一些其他语言不同。Java推崇的是结构化编程,鼓励使用循环和条件语句来控制程序流程。 3. `&`和`&&`都是...
- `Calendar`是抽象类,提供日期和时间的通用计算,它是`Date`的辅助类。可以通过`Calendar.getInstance()`获取实例。 3. **`SimpleDateFormat`** - `SimpleDateFormat`是具体的`DateFormat`子类,用于日期和时间...
在Java编程中,有时我们需要处理涉及数学计算的任务,特别是在金融或会计领域,要求精确的数值运算。`ProgramService.java` 文件展示了...此外,这个类也可以作为其他业务逻辑的辅助工具,帮助处理需要精确计算的场景。