大数字的计算

package object;

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * @author dayu
 * @Describe 大数字的计算
 */
public class BigIntegerDemo {
    public static void main(String[] args) {
        BigInteger bigInteger1 = new BigInteger("45645645645645645645645645645645645612321321312321312321456");
        BigInteger bigInteger2 = new BigInteger("45645645645612321321312321312321");
        System.out.println("加法:" + bigInteger1.add(bigInteger2));
        System.out.println("减法:" + bigInteger1.subtract(bigInteger2));
        System.out.println("乘法:" + bigInteger1.multiply(bigInteger2));
        System.out.println("除法:" + bigInteger1.divide(bigInteger2));
        BigInteger[] divideAndRemainder = bigInteger1.divideAndRemainder(bigInteger2);
        System.out.println("商商:" + divideAndRemainder[0] + ",余" + divideAndRemainder[1]);

        System.out.println(roundAndHalf(1234556.1415354,2));
    }

    /**
     * ·四舍五入的进位方法
     * @param num 源数据
     * @param scale 进位数
     * @return
     */
    private static double roundAndHalf(double num,int scale) {
         return new BigDecimal(num).divide(new BigDecimal(1), scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

}

一般计算:

package object;

/**
 * @author dayu
 */
public class MathDemo {
    public static void main(String[] args) {

        long round = Math.round(12.3);
        System.out.println(round);
        //自定义方法
        double round3 = round(123.563482, 4);
        System.out.println(round3);
    }

    /**
     * ·保留小数的四舍五入
     * @param num 原始数据源
     * @param scale 要保留的小数
     * @return
     */
    public static double round(double num, int scale) {
        return Math.round(num * Math.pow(10, scale)) / Math.pow(10, scale);
    }
}

原文地址:https://www.cnblogs.com/dayu007/p/10471657.html

时间: 2024-11-05 23:34:01

大数字的计算的相关文章

java 大数字计算

|--代码示例 1 /** 2 * @auther::9527 3 * @Description: 算法学习 4 * @program: oop 5 * @create: 2019-09-12 23:48 6 */ 7 public class Test { 8 public static void main(String[] args) { 9 //乘数 10 int multiplier = 358623965; 11 //被乘数 12 int multiplicand = 20020367

大数字操作、BigInteger的使用 BigDecimal(很大的小数)

1 public class Test4 { 2 public static void main(String[] args) { 3 BigInteger num1=new BigInteger("123456789123456789123456789"); 4 BigInteger num2=new BigInteger("2345678901234567890"); 5 System.out.println("加:"+(num1.add(n

大数字运算

本博客主要讲解 1.BigInteger 2.BigDecimal 在BigInteger类中封装了多种操作,除了基本的加.减.乘.除操作之外,还提供了绝对值.相反数.最大公约数以及判断是否为质数等操作. 当使用BigInteger类时,可以实例化一个BigInteger对象,并自动调用相应的构造函数.BigInteger类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字. BigDecimal和BigInteger都能实现大数字的运算,不同的是BigDecimal加入了小

java大数字操作:BigInteger,BigDecimal(浮点型)

java大数字操作: BigInteger:大数字整型的 BigDecimal(浮点型):大数字小数的,也适用大的整数 BigInteger: String num1 = "100381828646148164"; String num2 = "10998979766868"; BigInteger big1 = new BigInteger(num1); BigInteger big2 =new BigInteger(num2); System.out.print

JsonCpp读取较大数字出错问题

JsonCpp是c++中解析Json常用的解析库.在项目开发中,服务端如果用的是java的话都会是以JSON格式进行传输,客户端使用c++的话都会用到JsonCpp.看看下面这个问题:  json字串:{"@type":"Login","messageType":"Login","sendTime":1403575350411,"receivedTime":0,"loginId

大数据流式计算:关键技术及系统实例

孙大为1, 张广艳1,2, 郑纬民1 摘要:大数据计算主要有批量计算和流式计算两种形态,目前,关于大数据批量计算系统的研究和讨论相对充分,而如何构建低延迟.高吞吐且持续可靠运行的大数据流式计算系统是当前亟待解决的问题且研究成果和实践经验相对较少.总结了典型应用领域中流式大数据所呈现出的实时性.易失性.突发性.无序性.无限性等特征,给出了理想的大数据流式计算系统在系统结构.数据传输.应用接口.高可用技术等方面应该具有的关键技术特征,论述并对比了已有的大数据流式计算系统的典型实例,最后阐述了大数据流

POJ2389: 大数字乘法算法

2014-12-26 大数字乘法算法一般是采用模拟"小学生乘法演算过程”方法. 主要算法思想: 1. 乘数a第i)位与乘数b第j)位数字相乘,并将该乘积结果放到乘积结果数组product的第(i+j-1)位中: 2. 检查product的第(i+j-1)位中储存的数字是否超过或等于10,若是,则“取余并且进位”. 细节参考代码: 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 void s

赵强老师免费公开课第三季:大数据实时计算

大数据实时计算公开课课程简介 课程简介 实时处理系统,也称为流式处理系统,是目前大数据领域中非常热门的处理技术.相对于传统的离线数据处理系统,实时系统能够更加准确的得到处理的结果数据.目前实时处理系统有两大主流框架:一种是基于Apache Kafka和Apache Storm的框架:另一种是基于Spark Streaming的处理框架. 本次公开课将基于Apache Kafka和Apache Storm的框架,详细介绍这两部分的内容:第一部分将介绍大数据的消息系统:第二部分将介绍大数据的实时处理

大数字相乘

/** * 大数字相乘 */ public class Test1 { /** * ints * num * @param ints * @param num * @return */ public static int[] mul(int[] ints,int num){ for (int i = 0; i < ints.length; i++) { ints[i] *= num; } for (int i = ints.length-1; i > 0; i--) { ints[i-1] +