Java进行数字计算 BigDecimal计算(加减乘除)

这篇具有很好参考价值的文章主要介绍了Java进行数字计算 BigDecimal计算(加减乘除)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.前言

Double只能处理16位有效数精度,在某些情况下精度对其需求是不够的,所以就有了BigDecimal。因为BigDecimal的精度范围的范围大,所以在问我们的开发业务中对精度要求高的属性,就需要BigDecimal来进行存储计算,防止精度丢失。这里我主要介绍一下BigDecimal的加,减,乘,除。四种基础计算。

二.内容

首先准备两个BigDecimal类型的数

// new第一个参数

BigDecimal num1 = new BigDecimal(20.5555555555);

// new第二个参数

BigDecimal num2 = new BigDecimal(10.5555555554);

精度类 MathContext:

MathContext可以自己定义保留的有效数字位数:

MathContext mathContext = new MathContext(2);

其中2是指有效数字位数。MathContext类还有几个默认参数分别是:

MathContext.UNLIMITED = 不限制精度 采用四舍五入

MathContext.DECIMAL32 = 7位有效数字 采用“最接近的”数字舍入

MathContext.DECIMAL64 = 16位有效数字 采用“最接近的”数字舍入

MathContext.DECIMAL128 = 34位有效数字 采用“最接近的”数字舍入

1.加法

加法可以使用MathContext来确定有效数字位数:

// BigDecimal的加法 有两种 一种无精度入参 一种有精度入参

// 无精度入参 num1减去num2

BigDecimal addNum1 = num1.add(num2);

// 有精度入参

// MathContext.UNLIMITED = 不限制精度

// MathContext.DECIMAL32 = 7位有效数字

// MathContext.DECIMAL64 = 16位有效数字

// MathContext.DECIMAL128 = 34位有效数字

MathContext mathContext = new MathContext(2);

BigDecimal addNum2 = num1.add(num2, MathContext.DECIMAL32);

2.减法

减法可以使用MathContext来确定有效数字位数:

// BigDecimal的减法 有两种 一种无精度入参 一种有精度入参

// 无精度入参

BigDecimal subNum1 = num1.subtract(num2);

// 有精度入参

BigDecimal subNum2 = num1.subtract(num2,MathContext.DECIMAL32);

3.乘法

乘法可以使用MathContext来确定有效数字位数

// BigDecimal的乘法 有两种 一种无精度入参 一种有精度入参

// 无精度入参

BigDecimal mulNum1 = num1.multiply(num2);

// 有精度入参

BigDecimal mulNum2 = num1.multiply(num2,MathContext.DECIMAL32);

4.除法

其中除法有很多不同入参的方法,以下举例4种:

// BigDecimal的除法

// 无精度入参

BigDecimal divNum1 = num1.divide(num2);

// 有精度入参 MathContext

BigDecimal divNum2 = num1.divide(num2,MathContext.DECIMAL32);

// 有精度入参 RoundingMode RoundingMode.HALF_UP -> 四舍五入精度

BigDecimal divNum3 = num1.divide(num2, RoundingMode.HALF_UP);

// 有精度入参 RoundingMode RoundingMode.HALF_UP -> 四舍五入精度 scale 表示四舍五入到几位小数

BigDecimal divNum4 = num1.divide(num2,2, RoundingMode.HALF_UP)

具体代码如下:

package useful;

import java.math.BigDecimal;

public class StudyBigDecimal {

public static void main(String[] args) {

String s1 = "1.30";

String s2 = "-0.40";

StudyBigDecimal studyBigDecimal = new StudyBigDecimal();

String r = studyBigDecimal.add(s1, s2);

System.out.println(r);

}

public String add(String s1,String s2) {

BigDecimal b1 = new BigDecimal(String.valueOf(s1));

BigDecimal b2 = new BigDecimal(String.valueOf(s2));

BigDecimal b3 = b1.add(b2);

return b3.toString();

}

public void other(String s1,String s2) {

BigDecimal b1 = new BigDecimal(String.valueOf(s1));

BigDecimal b2 = new BigDecimal(String.valueOf(s2));

BigDecimal b3 = b1.subtract(b2); //减法运算

BigDecimal b4 = b1.multiply(b2); //乘法运算

BigDecimal b5 = b1.divide(b2); //除法运算

}

}

Java BigDecimal转化为字符串(科学计数法)的三种方法

介绍BigDecimal的3个toString方法的区别。

toEngineeringString:有必要时使用工程计数法。工程记数法是一种工程计算中经常使用的记录数字的方法,与科学计数法类似,但要求10的幂必须是3的倍数

toPlainString:不使用任何指数(永不使用科学计数法)

toString:有必要时使用科学计数法

import java.math.BigDecimal;

public class Test {

public static void main(String[] args) {

BigDecimal number = new BigDecimal("1E11");

System.out.println(number.toEngineeringString());

System.out.println(number.toPlainString());

System.out.println(number.toString());

}

}

输出:

100E+9

100000000000

1E+11文章来源地址https://www.toymoban.com/news/detail-402090.html

到了这里,关于Java进行数字计算 BigDecimal计算(加减乘除)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 小米面试题——不用加减乘除计算两数之和

    小米面试题——不用加减乘除计算两数之和

    (1) 如果有嵌入式企业需要招聘校园大使,湖南区域的日常实习,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02@gmail.com,此消息至2025年1月1日前均有效 (2)刷B站看到一个面试题,不用加减乘除计算两数之和。 (3)当时我看到这个题目,第一反应

    2024年02月10日
    浏览(5)
  • C语言 加减乘除模 的 高精度计算 (超详细)

    目录 高精度加法 高精度乘法 高精度减法          高精度除法 高精度模法   高精度计算 是模拟算法的一种,通过字符串和整型数组的使用,将加减乘除的竖式运算 模拟 出来,达到计算的目的。其步骤大致分为:一,将字符串数据存到整型数组中,二,模拟算法,不同的

    2023年04月24日
    浏览(5)
  • 用python写一个支持加减乘除的简单计算器

    运行该程序后,用户将首先看到一个菜单,提示用户可以选择四种运算之一。用户输入选择后,程序将要求输入两个数字,然后进行相应的计算并输出结果。 请注意,上面的程序仅作为一个简单的示例。实际的计算器程序可能需要更多的功能和验证输入的错误等方面的处理。

    2024年02月12日
    浏览(8)
  • JAVA中char类型加减乘除运算表达式返回类型

    我们都知道java中,如果char类型和int类型做加减法,那么char类型会被精度提升至int类型然后参与运算,返回的也是int类型的数据。 那么如果表达式中参与运算的 均为char类型 ,那么表达式返回的类型是什么呢? 经过简单测试,是 int类型 。 这个问题是在调用StringBuilder.appen

    2024年02月08日
    浏览(14)
  • 【Java版oj】day27不用加减乘除做加法、三角形

    【Java版oj】day27不用加减乘除做加法、三角形

    目录  一、不用加减乘除做加法 (1)原题再现 (2)问题分析 (3)完整代码  二、三角形 (1)原题再现 (2)问题分析 (3)完整代码 不用加减乘除做加法__牛客网 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 输入 1,2 输出 3 输入 0,0

    2023年04月16日
    浏览(10)
  • 加减乘除简单吗?不,一点都不,利用位运算实现加减乘除(代码中不含+ - * /)

    加减乘除简单吗?不,一点都不,利用位运算实现加减乘除(代码中不含+ - * /)

    这也是阿辉开的新专栏,知识将会很零散不成体系,不过绝对干货满满,今天这一篇 利用位运算实现加减乘除 费了阿辉九牛二虎之力,干的很自备饮水😆不多bb,进入今天的学习吧!!! 以下int均为有符号int,所求的加减乘除也是int类型的整型数 严谨 😏 在写加减乘除之前

    2024年02月03日
    浏览(10)
  • 高精度(加减乘除)

    高精度的核心思想就是利用数组去储存大数,然后通过模拟手动计算的方式,来进行计算。 主要分三个模块: 1.读入数据并转换为(int)类型储存 核心思想:将每个位上的数字都+起来,如果大于10就进位。 核心代码如下: 完整代码及解析如下: 减法核心:只使用大数减小数

    2024年02月08日
    浏览(13)
  • 不用加减乘除做加法

    不用加减乘除做加法

    写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号,本题OJ链接 数据范围:两个数都满足 −10≤n≤1000 进阶:空间复杂度 O(1),时间复杂度 O(1) 分析 :本题要求不能使用+、-、*、/,所以我们应该从二进制的角度去考虑,因为二进制的加法可以通

    2024年02月10日
    浏览(11)
  • 图像四则运算(加减乘除)

    图像四则运算(加减乘除)

    实验目的: 1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。 3.能够实现简单的图像处理 实验原理: 图像的代数运算包括加,减,乘,除,这些运算的主要对象是图像数据块中的数据。这四种代数运算可以由如

    2024年02月08日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包