import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
public class Arith {
private static final int DEF_DIV_SCALE = 10;
/**
* 两个Double数相加
* @param v1
* @param v2
* @return Double
*/
public static Double add(Double v1,Double v2){
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.add(b2).doubleValue();
}
/**
* 两个Double数相减
* @param v1
* @param v2
* @return Double
*/
public static Double sub(Double v1,Double v2){
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.subtract(b2).doubleValue();
}
/**
* 两个Double数相乘
* @param v1
* @param v2
* @return Double
*/
public static Double mul(Double v1,Double v2){
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.multiply(b2).doubleValue();
}
/**
* 两个Double数相除
* @param v1
* @param v2
* @return Double
*/
public static Double div(Double v1,Double v2){
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.divide(b2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 两个Double数相除,并保留scale位小数
* @param v1
* @param v2
* @param scale
* @return Double
*/
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(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 兩個數相減,如果有小數就向上進值.
* @param v1
* @param v2
* @return
*/
public static Double subtract(Double v1,Double v2){
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.subtract(b2,new MathContext(1,RoundingMode.CEILING)).doubleValue();
}
/**
* 對數值進行取值的優化.
* @param v1
* @param scale 取小數點后位數。
* @return
*/
public static Double getSacleDouble(Double v1,int scale){
BigDecimal b1 = new BigDecimal(v1.toString());
return b1.setScale(scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static void main(String args[]){
System.out.println(sub(1000d,2000d));
}
}
分享到:
相关推荐
本题目要求定义类模板实现2个数的最大值、最小值、加、减、乘、除等算术运算,在main()函数中使用该类模板分别实例化为int型和double型的类,定义相关的对象,读入2个整数和2个浮点数,然后分别输出它们的最大值、...
在C#编程语言中,算术运算、变量和数组操作是基础且至关重要的概念,对于任何初学者或经验丰富的开发者来说,理解并熟练掌握这些概念是编写高效代码的关键。以下是对这些主题的详细阐述: 一、算术运算 C#支持多种...
### 简单的算术运算和表达式 #### C++程序简单入门 在学习编程的过程中,理解基本的算术运算符和表达式至关重要。本文将深入探讨C++中的算术运算符及其应用,帮助初学者更好地掌握这些基础知识。 #### 3.1 C...
### C高级语言程序设计:算术运算与逻辑运算 #### 运算符概述 C语言提供了多种运算符来处理各种计算需求,主要包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符、逗号运算符、指针运算符...
在本文中,我们将深入探讨如何使用C语言通过位操作来模拟CPU的算术运算过程。这一技术对于理解计算机底层工作原理、优化代码性能以及在没有现成库函数可用时实现自定义运算非常有用。 首先,我们要知道CPU进行算术...
在C#中,算术运算是一项基本操作,它涵盖了加法、减法、乘法、除法以及整数和浮点数的提升。本文将深入探讨C#中的算术运算及其在.NET框架中的实现。 首先,我们有基本的算术运算符,包括: 1. 加法(+):用于将两...
在C#编程语言中,算术运算构成了基本的计算操作,是编写任何程序的基础。本文将深入探讨C#中的算术运算符及其用法,通过一些具体的例子来帮助理解。 一、基本算术运算符 1. 加法 (+):用于连接字符串或相加数值。...
在C#编程语言中,算术运算构成了基本的计算操作,是编写任何程序的基础。本文将深入探讨C#中的算术运算符及其用法,通过具体的例子帮助理解这些概念。 一、基本算术运算符 1. 加法 (+):用于连接数字或字符串。在...
### VB.NET初学者系列——算术运算符号 在学习任何编程语言时,理解其基本的算术运算符号是非常重要的一步。对于VB.NET这样的语言来说,掌握这些基础操作可以帮助开发者更高效地编写代码,并且能够更好地理解和调试...
加、减、乘、除运算是最常用的,其中如果涉及实数,结果默认为double类型。模运算符(%)用于整数除法后的余数计算,它要求操作数必须为整型。例如,`a % b` 计算 `a` 除以 `b` 后的余数。 算术表达式是由运算符和...
大部分的堆栈类实现表达式计算的例程都只能实现个位数的运算。在本例程中,创建了一个成员变量可为double型数字或是char型运算符的类,再建立该类的堆栈,最终可实现多位数的运算。
在本知识点中,我们将深入探讨如何使用“符优先法”来计算算术四则运算表达式。 符优先法是一种通过比较算术运算符的优先级来计算表达式的方法。这种方法特别适用于没有变量的整数表达式,并且能够有效地处理包含...
### 利用栈进行算术表达式运算的C++代码解析 #### 一、背景介绍 在计算机科学中,表达式的求值是一个重要的基础问题。本篇内容将深入探讨如何利用栈这一数据结构来实现算术表达式的计算,并具体分析了一个示例程序...
在C语言中,算术运算构成了程序的基本计算逻辑。本文将深入探讨C代码中的算术运算,基于"2-3清单(算术运算)"这一主题,我们将详细讲解相关的知识点。 1. **基本算术运算符** C语言支持以下基本的算术运算符: -...
在编程领域,尤其是Java语言中,算术运算构成了基本的逻辑和数据处理基础。本文将深入探讨Java中的算术运算,包括基本运算符、运算优先级、类型转换以及相关的编程实践。 1. 基本算术运算符: Java支持五种基本的...
3. **算术运算**:在解析完表达式后,我们使用`Double.parseDouble()`将字符串转换为`double`类型,然后执行相应的加、减、乘、除运算。Java提供了丰富的运算符支持,如`+`、`-`、`*`和`/`。 ```java double num1 =...
9. 算术运算和逻辑运算的区分:在编程中,算术运算是指对数值进行数学运算,如加、减、乘、除;而逻辑运算是用于条件判断的,如大于(>)、小于(<)、等于(==)等。 10. 整除与取余运算:整除运算(/)通常用于除...
double.js 具有31个准确的十进制数字(106位)的浮点展开,也称为双精度双精度算术或模拟float128。 该库对于扩展精度的快速计算很有用。 例如,在轨道力学,计算几何和数值不稳定算法中,例如执行三角剖分,多边形...
这个实验,"JAVA 上机实践实验6算术测试",旨在帮助学生深化对JAVA中的算术运算的理解,包括整数、浮点数的运算,以及运算符的优先级和结合性。以下是关于这个实验的详细知识点: 1. **基本算术运算符**:JAVA支持...