Java大数类介绍「建议收藏」

Java大数类介绍

大家好,又见面了,我是全栈君。

java能处理大数的类有两个高精度大整数BigInteger 和高精度浮点数BigDecimal,这两个类位于java.math包内,要使用它们必须在类前面引用该包:import java.math.BigInteger;和import java.math.BigDecimal;或者import java.math.*;

以下从几个方面对BigIntegerBigDecima做一个简单的比較:

一.常量

BigInteger:ONE,ZERO,TEN分别代表1,0,10.

其定义类似于:public static final BigInteger ONE = valueOf(1);

BigDecimal:除了以上三个常量外还有8个关于舍入的常量:ROUND_UP,ROUND_DOWN,ROUND_CEILING,ROUND_FLOOR,ROUND_HALF_UP,

ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_UNNECESSARY。详细舍入模式,请查阅Java API。

二.声明赋值

BigInteger:BigInteger bi = new BigInteger(byte[] val) ;

new BigInteger(int signum, byte[] magnitude) ;

new BigInteger(int bitLength, int certainty, Random rnd) 。

new BigInteger(int numBits, Random rnd) 。

new BigInteger(String val) 。

new BigInteger(String val, int radix) ;

构造函数仅仅能接受这几种类型,,比方这样定义就是错误的:BigInteger bi = new BigInteger(100);

或:BigInteger bi = BigInteger.valueOf(100);

数组定义与基本类型类似.

BigDecimal:BigDecimal bd = new BigDecimal(100);或:BigDecimal bd = BigDecimal.valueOf(100);

BigDecimal的构造函数比BigInteger多一些,感觉用起来更方便些

顺便说一下,java.util包中的Scanner类实现了nextBigInteger()和nextBigDecimal()方法,能够用来读入控制台输入的BigInteger和BigDecimal.给个样例:

三.相关函数

add(),subtract(),pow(),abs(),multiply()等等这一类就不介绍了,奇妙的是probablePrime(int bitLength, Random rnd),  nextProbablePrime()这一类竟然和素数扯得上关系。

BigDecimal关于格式控制的方法多了几个,这对处理各种不同格式的输出是非常实用的。

stripTraillingZeros():把不影响数值大小的0全去掉。

1.50 ->1.5;

1.00->1;

这功能非常实用吧。

大家都知道JAVA的类一般都要带toString这种方法的。BigDecimal则有toString,toPlainString和toEngineeringString三种表示成字符串的方法。

以下是这三种方法各自的特点:

toString: using scientific notation if an exponent is needed;

toEngineeringString:using engineering notation if an exponent is needed.

toPlainString:without an exponent field.


 




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115552.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月2日 下午9:00
下一篇 2022年2月2日 下午9:00


相关推荐

  • C++中this指针的使用方法.

    C++中this指针的使用方法.

    2021年11月30日
    36
  • linux下通过V4L2驱动USB摄像头

    linux下通过V4L2驱动USB摄像头目录目录前言 v4l2 解析 v4l2 介绍应用程序通过 V4L2 接口采集视频数据步骤相关结构体解析参考链接前言在移植罗技 C270 摄像头到 6818 的过程中 内核已经检测到了 USB 摄像头 但是直接用 OpenCV 的 API 比如 CvCapture cvCaptureFro intindex 接口 无法打开 USB 摄像头 至少目前我是这么认为的 然后 网上搜索答案

    2026年3月19日
    1
  • 已解决!PageHelper不分页几种情况的解决方法

    已解决!PageHelper不分页几种情况的解决方法近期做一个项目 用到了该插件 遇到了些问题 在这里分享一下解决方法问题一 pagehelper 没有效果 一直不能分页问题解决方法 引用其他博主的博客的解决 http blog csdn net linxingliang article details 问题二 pagehelper 有的时候有效果 有时候没有效果我在项目中就遇到了这个问题 找了好长时间

    2026年3月19日
    2
  • DNS协议详解及报文格式分析

    DNS协议详解及报文格式分析DNS 协议详解及报文格式分析 Postedon2017 06 18byJocent NoComments 目录一 DNS 协议理论知识 1 1 域名结构 1 2 域名服务器 1 3 域名解析过程二 DNS 协议报文格式 2 1 头部 2 2 正文三 Wireshark 分析 DNS 协议 3 1 请求报文 3 2 响应报文

    2026年3月17日
    2
  • Charles抓包指南

    Charles抓包指南1.进入Charles官网下载。2.安装Charles后,进行注册。help—>register—>input—>ok!RegisteredName:https://zhile.ioLicenseKey:48891cf209c6d32bf43.运行Charles,并进行配置。手机设置代理后,浏览器访问:chls.pro/ssl会下载证书,然后进入手机设置-安全设置-导入证书即可。小米手机需要第三方浏览器打开链接进行下载,否则下载的.

    2022年6月5日
    63
  • dedecms的include文件夹是干什么的?

    dedecms的include文件夹是干什么的?

    2021年9月25日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号