Java实现大数运算的实例代码

 更新时间:2017年06月26日 14:26:40   作者:拂晓Skyler  
这篇文章主要介绍了Java实现大数运算的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

一、大数运算介绍

大数运算,顾名思义,就是很大的数值的数进行一系列的运算。它是指由于编程语言提供的基本数值数据类型表示的数值范围有限,不能满足较大规模的高精度数值计算,因此需要利用其他方法实现高精度数值的计算,于是产生了大数运算。

二、Java实现大数运算方法

在BigDecimal用法详解这篇文章中给大家介绍了Java中的大数类BigDecimal的用法,那么在Java中我们实现大数运算时便可以使用这个类进行快速简便的实现。

实现代码如下:

import java.math.BigDecimal; 
class BigDecimalDemo  
{ 
  static final int location = 10; //小数点后位数 
  //加法 返回 num1+num2 
  public double add(double num1, double num2){ 
    BigDecimal b1 = new BigDecimal(num1); 
    BigDecimal b2 = new BigDecimal(num2); 
    return b1.add(b2).doubleValue(); 
  } 
  //减法 返回 num1-num2 
  public double sub(double num1, double num2){ 
    BigDecimal b1 = new BigDecimal(num1); 
    BigDecimal b2 = new BigDecimal(num2); 
    return b1.subtract(b2).doubleValue(); 
  } 
  //乘法 返回 num1*num2 
  public double mul(double num1, double num2){ 
    BigDecimal b1 = new BigDecimal(num1); 
    BigDecimal b2 = new BigDecimal(num2); 
    return b1.multiply(b2).doubleValue(); 
  } 
  //除法 返回 num1/num2 
  public double div(double num1, double num2){ 
    return div(num1,num2,location); 
  } 
  //除法 返回num1/num2 自定义小数点后位数 
  public double div(double num1, double num2, int _location){ 
    BigDecimal b1 = new BigDecimal(num1); 
    BigDecimal b2 = new BigDecimal(num2); 
    return b1.divide(b2,_location,BigDecimal.ROUND_HALF_UP).doubleValue(); 
  } 
 
 
  public static void main(String[] args)  
  { 
    BigDecimalDemo bd = new BigDecimalDemo(); 
    System.out.println(bd.add(12.123123,2)); //14.123123 
    System.out.println(bd.sub(12.123,5.1)); //7.023 
    System.out.println(bd.mul(9.99999,8.8888)); //88.887911112 
    System.out.println(bd.div(13,3)); //4.3333333333 小数点后10位 
    System.out.println(bd.div(13,3,20)); //4.333333333333333 小数点后15位 
 
    double b = 4.123123123123123123123123123; //4.123123123123123  double小数点后15位 
    System.out.println(b); 
 
    BigDecimal b2 = new BigDecimal(4.123123123123123123123123123); //4.12312312312312290174531881348229944705963134765625 
    System.out.println(b2); 
  } 
} 

三、实现总结

这篇文章只是提供了一种大家在平时需要使用大数运算的场合下一种快捷的实现,只是对Java的相关API进行的封装,并未涉及算法实现原理。至于对大数运算的底层实现有兴趣的人,可以研究Java大数类的实现源码。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring中使用@Value注解注入属性文件中的值详解

    Spring中使用@Value注解注入属性文件中的值详解

    这篇文章主要介绍了Spring中使用@Value注解注入属性文件中的值详解,通过Spring的@Value注解可以将xml中关联的属性文件中的值注入变量中,这样就不需要通过创建Properties然后根据属性文件读取属性值了,需要的朋友可以参考下
    2023-12-12
  • 出现java.lang.NoSuchMethodException异常的解决(靠谱)

    出现java.lang.NoSuchMethodException异常的解决(靠谱)

    这篇文章主要介绍了出现java.lang.NoSuchMethodException异常的解决方案(靠谱),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Spring中IOC和AOP的核心组成架构详解

    Spring中IOC和AOP的核心组成架构详解

    这篇文章主要介绍了Spring中IOC和AOP的核心组成架构详解,本文是对Spring的2大核心功能——IoC和AOP 的总结提炼,并增加了环境profile和条件化bean的内容,篇幅较短,更像是一个大纲,或者思维导图,需要的朋友可以参考下
    2023-08-08
  • springboot整合spring-data-redis遇到的坑

    springboot整合spring-data-redis遇到的坑

    使用springboot整合redis,使用默认的序列化配置,然后使用redis-client去查询时查询不到相应的key.问题出在哪,怎么解决呢?下面小编给大家带来了springboot整合spring-data-redis遇到的坑,需要的的朋友参考下吧
    2017-04-04
  • Springboot2.0配置JPA多数据源连接两个mysql数据库方式

    Springboot2.0配置JPA多数据源连接两个mysql数据库方式

    这篇文章主要介绍了Springboot2.0配置JPA多数据源连接两个mysql数据库方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 关于mybatis遇到Integer类型的参数时动态sql需要注意条件

    关于mybatis遇到Integer类型的参数时动态sql需要注意条件

    这篇文章主要介绍了关于mybatis遇到Integer类型的参数时动态sql需要注意条件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 基于springboot 长轮询的实现操作

    基于springboot 长轮询的实现操作

    这篇文章主要介绍了基于springboot 长轮询的实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Java未赋值变量的初始值解析(默认值)

    Java未赋值变量的初始值解析(默认值)

    这篇文章主要介绍了Java未赋值变量的初始值(默认值),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Sharding Jdbc批量操作引发fullGC解决

    Sharding Jdbc批量操作引发fullGC解决

    这篇文章主要为大家介绍了Sharding Jdbc批量操作引发fullGC解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Spring boot框架JWT实现用户账户密码登录验证流程

    Spring boot框架JWT实现用户账户密码登录验证流程

    这篇文章主要介绍了Springboot框架JWT实现用户账户密码登录验证,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06

最新评论