首页 > 其他分享 >大数据运算 BigInteger BigDecimal

大数据运算 BigInteger BigDecimal

时间:2023-03-26 20:45:21浏览次数:51  
标签:BigInteger 运算 BigDecimal System println new out

大数据运算 BigInteger BigDecimal

BigInteger
java中long型为最大整数类型,在Java中,超过long型的整数已经不能被称为整数了,它们被封装成BigInteger对象.在BigInteger类中,实现四则运算都是方法来实现,并不是采用运算符.

BigInteger类的构造方法:

BigInteger b = new BigInteger(str);

构造方法中,采用字符串的形式给出整数

BigDecimal
double和float类型在运算中很容易丢失精度,造成数据的不准确性,Java提供我们BigDecimal类可以实现浮点数据的高精度运算

构造方法如下:

BigDecimal b = new BigDecimal(str);

建议浮点数据以字符串形式给出,因为参数结果是可以预知的

实现加法减法乘法代码如下:(运算方法与BigInteger一致)

对于浮点数据的除法运算,和整数不同,可能出现无限不循环小数,因此需要对所需要的位数进行保留和选择舍入模式

BigDecimal b = big1.divide(big2,保留小数点后面几位,舍入模式)

BigDecimal b = big1.divide.(big2,2,BigDecimal.ROUND_DOWN)

import java.math.BigDecimal;
import java.math.BigInteger;
public class Main {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 大数据封装为BigInteger对象
        BigInteger big1 = new BigInteger("123456789012345678901234567890");
        BigInteger big2 = new BigInteger("12345678901234567890");
        // add加法运算
        BigInteger bigadd = big1.add(big2);
        System.out.println(bigadd);
        // 减法运算
        BigInteger bigsub = big1.subtract(big2);
        System.out.println(bigsub);
        // 乘法运算
        BigInteger bigmul = big1.multiply(big2);
        System.out.println(bigmul);
        // 除法运算
        BigInteger bigdiv = big1.divide(big2);
        System.out.println(bigdiv);
        // 其他运算 abs?

        System.out.println("-----------");
        System.out.println(0.09 + 0.01);
        System.out.println(1.0 - 0.32);
        System.out.println(1.015 * 100);
        System.out.println(1.301 / 100);
        System.out.println("-----------");

        // 大数据封装为BigDecimal对象
        BigDecimal big3 = new BigDecimal("0.09");
        BigDecimal big4 = new BigDecimal("0.01");
        // add实现加法运算
        BigDecimal bigAdd = big3.add(big4);
        System.out.println(bigAdd);

        BigDecimal big5 = new BigDecimal("1.0");
        BigDecimal big6 = new BigDecimal("0.32");
        // subtract实现减法运算
        BigDecimal bigSub = big5.subtract(big6);
        System.out.println(bigSub);

        BigDecimal big7 = new BigDecimal("1.105");
        BigDecimal big8 = new BigDecimal("100");
        // multiply实现乘法运算
        BigDecimal bigMul = big7.multiply(big8);
        System.out.println(bigMul);

        BigDecimal big9 = new BigDecimal("1.301");
        BigDecimal big10 = new BigDecimal("100");
        // 除法运算
        BigDecimal bigDiv = big9.divide(big10, 2, BigDecimal.ROUND_DOWN);
        System.out.println(bigDiv);
    }
}

输出:

123456789024691357802469135780
123456789000000000000000000000
1524157875323883675034293577501905199875019052100
10000000000
-----------
0.09999999999999999
0.6799999999999999
101.49999999999999
0.013009999999999999
-----------
0.10
0.68
110.500
0.01

 

标签:BigInteger,运算,BigDecimal,System,println,new,out
From: https://www.cnblogs.com/lizm166/p/17259475.html

相关文章

  • 阿里巴巴为什么建议使用BigDecimal进行浮点数运算
    本文先引入一个例子,星期天你和女朋友去逛街,看到一家奶茶店。女朋友想喝奶茶了,你就去买了杯奶茶,然后你问了一下价格。店员说奶茶0.9元一杯。然后你给了1元钱。这个时候你忽......
  • 逻辑运算符的优先级
    在一个表达式中,可以含有多个逻辑运算符,他们的优先级是:“!”最高“&&”次之“||”最低;逻辑运算低于所有关系运算,而“!”高于所有算术运算。第一个例子#define_CRT_SECURE_NO_W......
  • 【入门】Go语言运算符详解
    目录一、算数运算符1.1案例一:算数运算符练习1.2案例二:求三门成绩的总和、平均分1.3计算商场买衣服总共消费多少元一、算数运算符+-*/%++--1.1案例一:算数......
  • Python爬虫基础——03-类型转换和运算符
    2.6,类型转换函数说明int(x)将x转化成一个整数float(x)将x转化成一个浮点数str(x)将对象x转化成字符串bool(x)将对象x转化成布尔值2.6.1转换成整型:1---1#字符串(str)---转......
  • 运算符
    目录1.运算符和表达式运算符:表达式:2.算术运算符练习:数值拆分3.隐式转换概念:简单记忆:两种提升规则:取值范围从小到大的关系:4.隐式转换的练习案例一:案例二:案例三:案例四:案例五:......
  • 朱有鹏:位运算实战演练
    约定:题目中出现"设置"字符就是要把寄存器设置为1;出现”清除“就是把寄存器值设置为0位操作口诀:要置1用|;要清零用&;要取反用^;......
  • 为什么C++ 中需要运算符重载
    运算符重载的主要目的是为了方便程序员使用自定义类型。在某些情况下,C++的内置类型可能无法满足程序的需要,需要使用自定义类型。在这种情况下,合适的操作符重载可以使自定义......
  • Java运算符
    运算符算术运算符:++关系运算符:instanceof逻辑运算符:&&,||,!与或非位运算符:&|^~>>,<<,>>>条件运算符:?:Stringtype=score<60......
  • java中应用Stack进行算术运算
    java.util.stack,继承自VectorFILO,适合带有小括号的算术运算importjava.util.Stack;/***利用栈,进行四则运算的类*用两个栈来实现算符优先,一个栈用来保存需......
  • 怎么解决小数运算的精度问题?
     1.将数字转成整数这是最容易想到的方法,也相对简单functionadd(num1,num2){constnum1Digits=(num1.toString().split('.')[1]||'').length;constnum2Di......