public class Arithmetic4Double {
//默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
//所有方法均用静态方法实现,不允许实例化
private Arithmetic4Double() {}
/**
* 实现浮点数的加法运算功能
* @param v1 加数1
* @param v2 加数2
* @return v1+v2的和
*/
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 v1-v2的差
*/
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 v1×v2的积
*/
public static double multi(double v1,double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
/**
* 实现浮点数的除法运算功能
* 当发生除不尽的情况时,精确到小数点以后DEF_DIV_SCALE位(默认为10位),后面的位数进行四舍五入。
* @param v1 被除数
* @param v2 除数
* @return v1/v2的商
*/
public static double div(double v1,double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 实现浮点数的除法运算功能
* 当发生除不尽的情况时,精确到小数点以后scale位,后面的位数进行四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示需要精确到小数点以后几位
* @return v1/v2的商
*/
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();
}
}
相关推荐
在实际运行中,用户可以输入数字和选择运算类型,程序会动态地完成运算。 标签“java_四则运算 四则运算”表明这个压缩包中的内容着重于使用Java进行基本的数学计算,是一个不错的学习资源。提供的...
- **自动转换**:当不同数据类型进行运算时,会按照特定规则自动转换。 - **强制转换**:需要显式地将一个数据类型转换为另一个数据类型,如 `(int)rise`。 3. **运算符**: - **赋值运算符**:`=` - **算术...
Java的设计理念之一是“万物皆对象”,但基本数据类型(如`int`、`double`等)并不遵循这一规则。为了解决这一矛盾,Java引入了包装类,将基本数据类型封装成对象形式。例如,`Integer`是`int`的包装类,可以利用`...
在四则运算中,根据输入的数字类型,可能需要进行类型转换,例如将`int`转换为`double`以执行精确的浮点运算。 接下来,我们将探讨运算符的使用。在Java中,加法运算符是`+`,减法是`-`,乘法是`*`,除法是`/`。...
在Java编程语言中,创建一个实现四则运算的计算器是一个常见的练习项目,它可以帮助开发者熟悉基本的输入输出处理、逻辑控制以及数学运算。本项目名为"MyCalculator",它旨在模仿Windows计算器的功能,不仅支持基本...
通常,我们使用 `java.util.Scanner` 类从用户那里获取输入,用于计算表达式。例如: ```java Scanner input = new Scanner(System.in); System.out.println("请输入第一个数字:"); double num1 = input....
在Java中,我们可以使用内置的数据类型如`int`、`double`来存储数值,并使用算术运算符(`+`、`-`、`*`、`/`)来执行这些运算。例如,要进行加法运算,可以编写如下代码: ```java public double add(double num1, ...
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); Calculator calc = new Calculator(); while (true) { System.out....
这些方法接收两个double类型的参数,代表要进行运算的数字。 ```java public class Calculator { public double add(double num1, double num2) { return num1 + num2; } public double subtract(double num1,...
- **数据类型**:Java有八种基本数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 - **变量定义**:声明变量时需要指定数据类型,如`int width, ...
1. **基础数据类型**:计算器可能使用`int`或`double`类型来存储数值,`int`用于整数,`double`用于浮点数,以支持小数运算。 2. **运算符**:Java提供了算术运算符,如`+`、`-`、`*`和`/`,用于执行加、减、乘、除...
对于浮点数运算,可以使用`double`或`float`类型。例如: ```java double x = 5.2; double y = 3.1; double result = x * y; ``` 接下来,我们讨论三角函数。Java的`java.lang.Math`类提供了许多数学函数,包括...
在数字求和运算中,我们主要关注基本数据类型,如`int`(整型)和`double`(双精度浮点型)。`int`用于存储整数,而`double`则用于存储带有小数点的数值。在这个实例中,我们将使用`int`类型来存储我们的数字和。 ...
实验2-1展示了char、int、float和double之间的转换和运算,实验2-2则通过强制类型转换将double类型的变量赋值给int类型的变量,这些实验加深了对Java数据类型和类型转换的理解。 总体来说,这份上机指导教材以实践...
Java的`java.util.Stack`类可以方便地实现这一点。解析器还需要考虑括号的嵌套和运算符的优先级,如先乘除后加减。 此外,我们还需要处理错误情况,如除以零或输入非法的数学表达式。可以抛出自定义的异常,如`...
科学计算通常涉及浮点数运算,Java中的`double`类型非常适合处理这种类型的计算。所有的计算方法都应处理`double`类型的参数和返回值。 5. 科学计数法: 要实现科学计数法,我们需要检查数值是否过大或过小,然后...
- **日期类型转换**:Java中的日期处理通常涉及`java.util.Date`类或`java.time`包中的类,如`LocalDate`, `LocalTime`等,它们有自己的转换方法。 ### 类型转换细节 - **自动类型转换**: - 对于byte, short, ...
Applet是Java的一种特殊类型的应用程序,它可以嵌入到Web页面中,由用户的浏览器运行。 在Java编程中,Applet是通过Java编写的轻量级客户端程序,它们通常用于增强网页的交互性。要创建一个Java Applet,你需要继承...
1. **基本数据类型**:Java有八种基本数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。在实现计算器时,我们将使用这些类型来存储和操作数值。 2. **...
在“java_self-taught:java学习过程”这个主题中,我们可以深入探讨Java编程语言的基础知识,特别是关于数据类型和运算规则以及编程机制。Java是一种广泛使用的面向对象的编程语言,以其跨平台、高效和安全性著称。...