java中BigDecimal加减乘除基本用法

合集下载

bigdecimal 加减乘除运算符

bigdecimal 加减乘除运算符

bigdecimal 加减乘除运算符BigDecimal是Java中一个用于高精度计算的类,可以进行加减乘除等基本运算操作。

本文将分别介绍BigDecimal的加减乘除运算符,并通过示例代码展示其使用方法和注意事项。

一、加法运算符BigDecimal的加法运算符为“+”,可以对两个BigDecimal对象进行相加操作。

在进行加法运算时,需要注意两点:1. BigDecimal对象是不可变对象,即加法运算不会改变原对象的值,而是返回一个新的BigDecimal对象作为结果。

2. 在进行加法运算时,需要使用add()方法,并传入要相加的BigDecimal对象。

示例代码如下:```BigDecimal num1 = new BigDecimal("10.5");BigDecimal num2 = new BigDecimal("5.3");BigDecimal sum = num1.add(num2);System.out.println("两个数的和为:" + sum);```输出结果为:```两个数的和为:15.8```二、减法运算符BigDecimal的减法运算符为“-”,可以对两个BigDecimal对象进行相减操作。

与加法运算类似,减法运算也需要注意两点:1. 减法运算同样不会改变原对象的值,而是返回一个新的BigDecimal对象作为结果。

2. 在进行减法运算时,需要使用subtract()方法,并传入要相减的BigDecimal对象。

示例代码如下:```BigDecimal num1 = new BigDecimal("10.5");BigDecimal num2 = new BigDecimal("5.3");BigDecimal diff = num1.subtract(num2);System.out.println("两个数的差为:" + diff);```输出结果为:```两个数的差为:5.2```三、乘法运算符BigDecimal的乘法运算符为“*”,可以对两个BigDecimal对象进行相乘操作。

Java对BigDecimal常用方法的归类(加减乘除)

Java对BigDecimal常用方法的归类(加减乘除)

Java中的BigDecimal类提供了一系列方法来执行数字运算。

这些方法可以归为以下四类:加法、减法、乘法和除法。

1.加法方法:add(BigDecimal value):将指定的值加到此BigDecimal。

add(BigDecimal augend, MathContext mc):使用指定的上下文将此BigDecimal与另一个相加。

plus():返回此BigDecimal的正数值。

plus(MathContext mc):使用指定的上下文返回此BigDecimal的正数值。

2.减法方法:subtract(BigDecimal value):从此BigDecimal中减去指定的值。

subtract(BigDecimal subtrahend, MathContext mc):使用指定的上下文从此BigDecimal中减去另一个BigDecimal。

negate():返回此BigDecimal的负数值。

negate(MathContext mc):使用指定的上下文返回此BigDecimal的负数值。

3.乘法方法:multiply(BigDecimal value):将此BigDecimal乘以指定的值。

multiply(BigDecimal multiplicand, MathContext mc):使用指定的上下文将此BigDecimal乘以另一个BigDecimal。

pow(int n):返回此BigDecimal的n次幂。

pow(int n, MathContext mc):使用指定的上下文返回此BigDecimal的n次幂。

4.除法方法:divide(BigDecimal divisor):将此BigDecimal除以指定的值。

divide(BigDecimal divisor, MathContext mc):使用指定的上下文将此BigDecimal除以另一个BigDecimal。

java bigdecimal加减法

java bigdecimal加减法

一、概述在编程开发中,精确的数值计算是非常重要的,特别是在涉及金融、科学和工程领域。

在Java编程语言中,提供了BigDecimal类来处理高精度浮点数的运算,其中就包括加减法运算。

本文将介绍如何使用Java中的BigDecimal类进行加减法运算,以及在实际开发中的一些注意事项。

二、BigDecimal类简介BigDecimal是Java中的一个用于精确计算的类,它可以表示任意精度、用十进制表示的有符号的定点小数。

在处理浮点数运算时,BigDecimal可以避免由于浮点数精度问题而导致的计算错误,确保计算结果的准确性。

三、BigDecimal的加法运算在使用BigDecimal类进行加法运算时,可以通过调用add方法来实现。

例如:```javaBigDecimal num1 = new BigDecimal("0.1");BigDecimal num2 = new BigDecimal("0.2");BigDecimal sum = num1.add(num2);System.out.println("0.1 + 0.2 = " + sum);```以上代码将输出:0.1 + 0.2 = 0.3。

通过BigDecimal的add方法,可以确保数值计算的精确性,避免因为浮点数精度问题而导致的结果不准确。

四、BigDecimal的减法运算与加法类似,使用BigDecimal类进行减法运算时,可以通过调用subtract方法来实现。

例如:```javaBigDecimal num1 = new BigDecimal("0.3");BigDecimal num2 = new BigDecimal("0.1");BigDecimal difference = num1.subtract(num2);System.out.println("0.3 - 0.1 = " + difference);```以上代码将输出:0.3 - 0.1 = 0.2。

bigdecimal逻辑运算法则

bigdecimal逻辑运算法则

bigdecimal逻辑运算法则BigDecimal 是 Java 中一个专门用来处理高精度计算的类,它支持加、减、乘、除等基本的算术运算,同时也支持比较和取反等逻辑运算。

逻辑运算法则如下:1. 取反运算:negate()将当前 BigDecimal 对象的符号位进行取反,返回一个新的BigDecimal 对象。

2. 比较大小运算:compareTo(BigDecimal val)比较当前 BigDecimal 对象与另一个 BigDecimal 对象的大小关系,如果当前对象小于另一个对象,则返回-1;如果当前对象等于另一个对象,则返回0;如果当前对象大于另一个对象,则返回1。

3. 等于运算:equals(Object obj)比较当前 BigDecimal 对象与另一个对象是否相等,如果相等则返回true,否则返回 false。

4. 大于运算:gt(BigDecimal val)比较当前 BigDecimal 对象与另一个 BigDecimal 对象的大小关系,如果当前对象大于另一个对象,则返回 true,否则返回 false。

5. 小于运算:lt(BigDecimal val)比较当前 BigDecimal 对象与另一个 BigDecimal 对象的大小关系,如果当前对象小于另一个对象,则返回 true,否则返回 false。

6. 大于等于运算:gteq(BigDecimal val)比较当前 BigDecimal 对象与另一个 BigDecimal 对象的大小关系,如果当前对象大于等于另一个对象,则返回 true,否则返回 false。

7. 小于等于运算:lteq(BigDecimal val)比较当前 BigDecimal 对象与另一个 BigDecimal 对象的大小关系,如果当前对象小于等于另一个对象,则返回 true,否则返回 false。

BigDecimal的运算——加减乘除

BigDecimal的运算——加减乘除

BigDecimal的运算——加减乘除BigDecimal的运算——加减乘除1、初始化(尽量⽤字符串的形式初始化)BigDecimal num12 = new BigDecimal("0.005");BigDecimal num22 = new BigDecimal("1000000");BigDecimal num32 = new BigDecimal("-1000000");2、加法 add()函数// 加法BigDecimal result1 = num1.add(num2);BigDecimal result12 = num12.add(num22);3、减法subtract()函数// 减法BigDecimal result2 = num1.subtract(num2);BigDecimal result22 = num12.subtract(num22);4、乘法multiply()函数// 乘法BigDecimal result3 = num1.multiply(num2);BigDecimal result32 = num12.multiply(num22);5、除法divide()函数// 除法BigDecimal result5 = num2.divide(num1,20,BigDecimal.ROUND_HALF_UP);BigDecimal result52 = num22.divide(num12,20,BigDecimal.ROUND_HALF_UP);6、绝对值abs()函数// 绝对值BigDecimal result4 = num3.abs();BigDecimal result42 = num32.abs();7、⼋种舍⼊模式解释如下7.1 ROUND_UP 舍⼊远离零的舍⼊模式。

在丢弃⾮零部分之前始终增加数字(始终对⾮零舍弃部分前⾯的数字加1)。

java中bigdecimal类型常用加减乘除及大小比对

java中bigdecimal类型常用加减乘除及大小比对

java中bigdecimal类型常用加减乘除及大小比对Java中的BigDecimal类型是用来处理精确的十进制数计算的。

它提供了一系列的方法来进行加减乘除以及大小比对操作。

首先,我们来看一下BigDecimal的加法操作。

BigDecimal类提供了add方法来进行两个BigDecimal对象的相加操作。

例如,我们有两个BigDecimal对象a和b,我们可以使用a.add(b)来得到它们的和。

接下来,我们来看一下BigDecimal的减法操作。

BigDecimal类提供了subtract方法来进行两个BigDecimal对象的相减操作。

例如,我们有两个BigDecimal对象a和b,我们可以使用a.subtract(b)来得到它们的差。

然后,我们来看一下BigDecimal的乘法操作。

BigDecimal类提供了multiply方法来进行两个BigDecimal对象的相乘操作。

例如,我们有两个BigDecimal对象a和b,我们可以使用a.multiply(b)来得到它们的积。

最后,我们来看一下BigDecimal的除法操作。

BigDecimal类提供了divide方法来进行两个BigDecimal对象的相除操作。

例如,我们有两个BigDecimal对象a和b,我们可以使用a.divide(b)来得到它们的商。

除了基本的加减乘除操作之外,BigDecimal还提供了一些其他的方法来进行大小比对。

例如,我们可以使用compareTo方法来比较两个BigDecimal对象的大小。

如果第一个对象大于第二个对象,则返回一个正数;如果第一个对象小于第二个对象,则返回一个负数;如果两个对象相等,则返回0。

另外,BigDecimal还提供了一些其他的方法来进行取整操作。

例如,我们可以使用setScale方法来设置BigDecimal对象的小数位数。

我们可以使用setScale(2)来设置小数位数为2,这样就可以保留两位小数。

bigdecimal加减乘除方法

bigdecimal加减乘除方法BigDecimal是Java中用于处理高精度数字的类,它可以处理任意位数的数字,而且不会出现精度丢失的问题。

在实际开发中,我们经常需要对BigDecimal进行加减乘除运算,下面就来介绍一下BigDecimal的加减乘除方法。

一、BigDecimal的加法方法BigDecimal的加法方法是add(),它可以接受一个BigDecimal类型的参数,也可以接受一个double类型的参数。

如果接受一个double 类型的参数,它会自动将double类型转换为BigDecimal类型。

下面是一个示例代码:```BigDecimal a = new BigDecimal("1.23");BigDecimal b = new BigDecimal("4.56");BigDecimal c = a.add(b);System.out.println(c);```输出结果为:5.79二、BigDecimal的减法方法BigDecimal的减法方法是subtract(),它也可以接受一个BigDecimal类型的参数,也可以接受一个double类型的参数。

下面是一个示例代码:```BigDecimal a = new BigDecimal("4.56");BigDecimal b = new BigDecimal("1.23");BigDecimal c = a.subtract(b);System.out.println(c);```输出结果为:3.33三、BigDecimal的乘法方法BigDecimal的乘法方法是multiply(),它也可以接受一个BigDecimal类型的参数,也可以接受一个double类型的参数。

下面是一个示例代码:```BigDecimal a = new BigDecimal("1.23");BigDecimal b = new BigDecimal("4.56");BigDecimal c = a.multiply(b);System.out.println(c);```输出结果为:5.6088四、BigDecimal的除法方法BigDecimal的除法方法是divide(),它可以接受一个BigDecimal类型的参数,也可以接受一个double类型的参数。

JAVA BigDecimal 加减乘除

BigDecimal 加减乘除在Java计算中,简单类型不能够精确的对浮点数进行运算,经常会遇到精度问题,例如:4.015*100;直接输出结果后得到401.49999999999994。

为何呢?这是由于计算机是二进制运算的,而浮点数没有办法使用二进制进行精确的表示。

在这种情况下,我们来使用BigDecimal类进行精确计算,这个工具类提供精确的浮点数运算,包括加减乘除和四舍五入。

java.math.BigDecimal。

BigDecimal一共有4个构造方法,其中的两种用法:第一种:BigDecimal(double val)Translates a double into a BigDecimal.第二种:BigDecimal(String val) (建议使用)Translates the String repre sentation of a BigDecimal into a BigDecimal.1.The results of this constructor can be somewhat unpredictable. One might assume thatwriting new BigDecimal(0.1) in Java creates a BigDecimal which is exactly equal t o 0.1 (an unscaled value of 1, with a scale of 1), but it is actually equal to 0.1000 000000000000055511151231257827021181583404541015625. This is because 0.1 cannot be re presented exactly as a double (or, for that matter, as a binary fraction of any fin ite length). Thus, the value that is being passed in to the constructor is not exac tly equal to 0.1, appearances notwithstanding.2.The String constructor, on the other hand, is perfectly predictable: writing new BigDecimal("0.1") creates a BigDecimal which is exactly equal to 0.1, as one would expect. Therefore, it is generally recommended that the String constructor be used in preference to this one.3.When a double must be used as a source for a BigDecimal, note that this constructor provides an exact conversion; it does not give the same result as converting the d ouble to a String using the Double.toString(double) method and then using the B igDecimal(String) constructor. To get that result, use the staticvalueOf(double) m ethod.示例代码:public static BigDecimal add(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.add(b2);}public static BigDecimal sub(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.subtract(b2);}public static BigDecimal mul(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.multiply(b2);}public static BigDecimal div(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.divide(b2,2,BigDecimal.ROUND_HALF_UP);//四舍五入,保留2位小数}。

使用BigDecimal进行精确运算(实现加减乘除运算)

使⽤BigDecimal进⾏精确运算(实现加减乘除运算)⾸先我们先来看如下代码⽰例:复制代码代码如下:public class Test_1 {public static void main(String[] args) {System.out.println(0.06+0.01);System.out.println(1.0-0.42);System.out.println(4.015*100);System.out.println(303.1/1000);}}运⾏结果如下0.069999999999999990.5800000000000001401.499999999999940.30310000000000004你认为你看错了,但结果却是是这样的。

问题在哪⾥呢?原因在于我们的计算机是⼆进制的。

浮点数没有办法是⽤⼆进制进⾏精确表⽰。

我们的CPU表⽰浮点数由两个部分组成:指数和尾数,这样的表⽰⽅法⼀般都会失去⼀定的精确度,有些浮点数运算也会产⽣⼀定的误差。

如:2.4的⼆进制表⽰并⾮就是精确的2.4。

反⽽最为接近的⼆进制表⽰是 2.3999999999999999。

浮点数的值实际上是由⼀个特定的数学公式计算得到的。

其实java的float只能⽤来进⾏科学计算或⼯程计算,在⼤多数的商业计算中,⼀般采⽤java.math.BigDecimal类来进⾏精确计算。

在使⽤BigDecimal类来进⾏计算的时候,主要分为以下步骤:1、⽤float或者double变量构建BigDecimal对象。

2、通过调⽤BigDecimal的加,减,乘,除等相应的⽅法进⾏算术运算。

3、把BigDecimal对象转换成float,double,int等类型。

⼀般来说,可以使⽤BigDecimal的构造⽅法或者静态⽅法的valueOf()⽅法把基本类型的变量构建成BigDecimal对象。

复制代码代码如下:BigDecimal b1 = new BigDecimal(Double.toString(0.48));BigDecimal b2 = BigDecimal.valueOf(0.48);对于常⽤的加,减,乘,除,BigDecimal类提供了相应的成员⽅法。

bigdecimal类型计算

一、什么是bigdecimal类型bigdecimal类型是Java中用来表示任意精度的十进制数的数据类型。

它可以精确表示小数,避免了使用double或float类型时可能出现的精度丢失问题。

在需要对金融数据或其他要求精确计算的场景中,一般会选择使用bigdecimal类型。

二、bigdecimal类型的使用在Java中,我们可以通过以下方式来使用bigdecimal类型进行计算:1. 创建bigdecimal对象:```javaBigDecimal num1 = new BigDecimal("10.5");BigDecimal num2 = new BigDecimal("20.3");```2. 进行加减乘除运算:```javaBigDecimal result1 = num1.add(num2); // 加法BigDecimal result2 = num1.subtract(num2); // 减法BigDecimal result3 = num1.multiply(num2); // 乘法BigDecimal result4 = num1.divide(num2); // 除法```3. 设置精确度:```javaBigDecimal num3 = new BigDecimal("10.xxx");num3 = num3.setScale(2, RoundingMode.HALF_UP); // 设置小数位数为2,并进行四舍五入```三、bigdecimal类型的注意事项在使用bigdecimal类型进行计算时,需要注意以下几点:1. 避免使用double或float类型的构造方法:```java// 不推荐的写法BigDecimal num = new BigDecimal(0.1);// 推荐的写法BigDecimal num = new BigDecimal("0.1");```2. 使用字符串类型的构造方法可以避免精度丢失问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Jsoup加载HTML的三种方式
从字符串解析
来自用户输入,一个文件或一个网站的HTML字符串,你可能需要对它进行解析并取其内容,或校验其格式是否完整,或想修改它。

String html = "<html><head><title>First parse</title></head>"
+ "<body><p>from </p></body></html>";
Document doc = Jsoup.parse(html);
只要解析的不是空字符串,就能返回一个结构合理的文档,其中包含(至少) 一个head和一个body元素。

一旦拥有了一个Document,你就可以使用Document中适当的方法或它父类Element 和Node中的方法来取得相关数据。

实用示例:
package com.cui.test;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* 从字符串解析HTML
* @author java小强
*/
public class StringHtmlSpider {
public static void main(String[] args) {
try {
String html = "<html><head><title>First parse</title></head>"
+ "<body><p>from </p></body></html>";
Document doc = Jsoup.parse(html);
Elements elements = doc.getElementsByTag("p");// 根据标签获取
Element e = elements.get(0);// 因为我知道只有一个p
System.out.println(e.text());
// 打印from
} catch (Exception e) {
e.printStackTrace();
}
}
}
从本地文件加载
在本机硬盘上有一个HTML文件,需要对它进行解析从中抽取数据或进行修改。

本示例HTML文件内容和上面示例字符串内容一致。

File input = new File("D:\\javacui.html");
Document doc = Jsoup.parse(input, "UTF-8");
这个方法用来加载和解析一个HTML文件。

如在加载文件的时候发生错误,将抛出IOException,应作适当处理。

实用示例:
package com.cui.test;
import java.io.File;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* 从本地文件解析HTML
* @author java小强
*/
public class LocalDiskSpider {
public static void main(String[] args) {
try {
File input = new File("D:\\javacui.html");
Document doc = Jsoup.parse(input, "UTF-8");
Elements elements = doc.getElementsByTag("p");// 根据标签获取
Element e = elements.get(0);// 因为我知道只有一个p
System.out.println(e.text());
// 打印from
} catch (Exception e) {
e.printStackTrace();
}
}
}
你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据。

Document doc = Jsoup.connect("/").get();
String title = doc.title();
connect(String url) 方法创建一个新的Connection, 和get() 取得和解析一个HTML文件。

如果从该URL获取HTML时发生错误,便会抛出IOException,应适当处理。

Connection 接口还提供一个方法链来解决特殊请求,具体如下:
Document doc = Jsoup.connect("")
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
这个方法只支持Web URLs (http和https 协议)。

文章来源:长沙牛耳教育。

相关文档
最新文档