java里的BigInteger和BigDecimal-程序员宅基地

技术标签: java  

阶乘:

View Code
 1 import java.io.*;
 2 import java.math.*;
 3 public class BigInteger_factorial {
 4   public static void main(String[] args) throws IOException{
 5          BigInteger s = BigInteger.valueOf(1);
 6          for ( int i = 1;i<=500 ; i++){
 7               s = s.multiply(BigInteger.valueOf(i));
 8               System.out.println(s);
 9         }
10   }
11 }

大数计算hrbustoj1582:

View Code
 1 import java.math.*;
 2 import java.util.*;
 3 import java.io.*;
 4 
 5 public class Main {
 6     Scanner cin = new Scanner(new BufferedInputStream(System.in));
 7     public void solve() {
 8         String s1, s2;
 9         s1 = cin.next();
10         s2 = cin.next();
11         if (s1.charAt(0) == '+') s1 = s1.substring(1, s1.length());
12         if (s2.charAt(0) == '+') s2 = s2.substring(1, s2.length());
13         BigInteger a = new BigInteger(s1), b = new BigInteger(s2);
14         System.out.println(a.add(b));
15     }
16     public static void main(String args[]) {
17         Main test = new Main();
18         while (test.cin.hasNext()) {
19             test.solve();
20         }
21     }
22 }

BigInteger和BigDecimal可以说是acmer选择java的首要原因。 函数:add, subtract, divide, mod, compareTo等,其中加减乘除模都要求是

BigInteger(BigDecimal)和BigInteger(BigDecimal)之间的运算,所以需要把int(double)类型转换为BigInteger(BigDecimal),用函数BigInteger.valueOf().

BigInteger

主要API

将字符串转换成BigInteger

BigInteger(String val)                 将 BigInteger 的十进制字符串表示形式转换为 BigInteger。

BigInteger(String val, int radix)            将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger。

BigInteger的加法

BigInteger

add(BigInteger val)      返回其值为 (this + val) 的 BigInteger。

BigInteger

and(BigInteger val)      返回其值为 (this & val) 的 BigInteger。

BigInteger的减法

BigInteger

subtract(BigInteger val)      返回其值为 (this - val) 的 BigInteger。

BigInteger的乘法

BigInteger

multiply(BigInteger val)      返回其值为 (this * val) 的 BigInteger。

大数求余:

BigInteger

mod(BigInteger m)       返回其值为 (this mod m) 的 BigInteger。

 大数除法

BigInteger

divide(BigInteger val)     返回其值为 (this / val) 的 BigInteger。

其他一些

BigInteger

gcd(BigInteger val)                          返回一个 BigInteger,其值是 abs(this) 和 abs(val) 的最大公约数。

 

BigInteger

max(BigInteger val)             返回此 BigInteger 和 val 的最大值。

BigInteger

min(BigInteger val)              返回此 BigInteger 和 val 的最小值。

BigDecimal类

主要API:

将字符串转换成BigDecimal

BigDecimal(String val)                                              将 BigDecimal 的字符串表示形式转换为 BigDecimal。

BigDecimal(String val,MathContext mc)                     将 BigDecimal 的字符串表示形式转换为 BigDecimal,接受与 BigDecimal(String) 构造方法

                                                                                相同的字符串(按照上下文设置进行舍入)。

两个BigDecimal的相加

BigDecimal

add(BigDecimal augend)                        返回一个 BigDecimal,其值为 (this + augend),其标度为 max(this.scale(), augend.scale())。

BigDecimal

add(BigDecimal augend,MathContext mc)返回其值为 (this + augend) 的 BigDecimal(根据上下文设置进行舍入)。

两个BigDecimal的相减

BigDecimal

subtract(BigDecimal subtrahend)              返回一个 BigDecimal,其值为 (this - subtrahend),其标度为 max(this.scale(), subtrahend.scale())。

BigDecimal

subtract(BigDecimal subtrahend,MathContext mc)返回其值为 (this - subtrahend) 的 BigDecimal(根据上下文设置进行舍入)。

两个BigDecimal的相除:

BigDecimal

divide(BigDecimal divisor)                       返回一个 BigDecimal,其值为 (this / divisor),其首选标度为 (this.scale() - divisor.scale());

                                                              如果无法表示准确的商值(因为它有无穷的十进制扩展),则抛出 ArithmeticException。

BigDecimal

divide(BigDecimal divisor, int roundingMode)        返回一个 BigDecimal,其值为 (this / divisor),其标度为 this.scale()。

BigDecimal

divide(BigDecimal divisor, int scale, int roundingMode)   返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。

BigDecimal

divide(BigDecimal divisor, int scale,RoundingMode roundingMode) 返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。

BigDecimal

divide(BigDecimal divisor,MathContext mc)                返回其值为 (this / divisor) 的 BigDecimal(根据上下文设置进行舍入)。

BigDecimal

divide(BigDecimal divisor,RoundingMode roundingMode)      返回一个 BigDecimal,其值为 (this / divisor),其标度为 this.scale()。

计算BigDecimal的N次幂

BigDecimal

pow(int n)                                返回其值为 (thisn) 的 BigDecimal,准确计算该幂,使其具有无限精度。

BigDecimal

pow(int n, MathContext mc)                       返回其值为 (thisn) 的 BigDecimal。

有关转换成字符串的方法

String

toEngineeringString()                              返回此 BigDecimal 的字符串表示形式,需要指数时,则使用工程计数法。

String

toPlainString()                                  返回不带指数字段的此 BigDecimal 的字符串表示形式。

String

toString()                                    返回此 BigDecimal 的字符串表示形式,如果需要指数,则使用科学记数法。

 

转载于:https://www.cnblogs.com/-sunshine/archive/2013/01/11/2856580.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30732487/article/details/97856083

智能推荐

区块链分类_按准入机制划分区块链-程序员宅基地

文章浏览阅读3.8k次。按照区块链节点的准入机制,目前区块链可以分为如下三类:(1) 公有链:任何人都可以访问公有链的状态,任何节点都具有读写权限。目前主流的公有链是比特币和以太坊[54]。(2) 联盟链:由一些机构联合构建的区块链,可以设置访问权限和节点加入权限,只有授权节点才可以加入,主流的联盟链有Hyperledger Fabric[55]和Quorum[56]。(3) 私有链:所有节点都同属于一个组织,只有这个组织内部可以决定其使用目的,具有部分去中心化的特性。..._按准入机制划分区块链

Android事件分发机制完全解析,带你从源码的角度彻底理解(下)-程序员宅基地

文章浏览阅读500次。转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9153761记得在前面的文章中,我带大家一起从源码的角度分析了Android中View的事件分发机制,相信阅读过的朋友对View的事件分发已经有比较深刻的理解了。还未阅读过的朋友,请先参考 Android事件分发机制完全解析,带你从源码的角度彻底理解(上) 。

InnoDB的缓冲池(buffer pool)-程序员宅基地

文章浏览阅读295次。应用系统分层架构,为了加速数据访问,会把最常访问的数据,放在缓存(cache)里,避免每次都去访问数据库。操作系统,会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问。MySQL作为一个存储系统,同样具有缓冲池(buffer pool)机制,以避免每次查询数据都进行磁盘IO。今天,和大家聊一聊InnoDB的缓冲池。InnoDB的缓冲池缓存什么?有什么用?缓存表数据与索引数据,把磁盘上的数据加载到缓冲池,避免每次访问都进行磁盘IO,起到加速..._innodb的缓冲池

【NISP一级】考前必刷九套卷(五)_waf的敏感信息检测规则可检测http信息中的哪部分?(2.5分)a. http请求头b.http-程序员宅基地

文章浏览阅读4.3k次。HTTP 请求是指从客户端到服务器端的请求消息。下列选项中不是 HTTP 请求方法的是_________ A.BODY B.POST C.HEAD D.GET HTTP 消息(HTTP HEADER)又称 HTTP 头,包括请求头等四部分。请求头只出现在 HTTP 请求中,请求头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息,常用的 HTTP 请求报头不包括_________ A.Line B.Cookie C.Accept D.Host..._waf的敏感信息检测规则可检测http信息中的哪部分?(2.5分)a. http请求头b.http

LabVIEW数据采集:视频教程附录1手把手安装LabVIEW_labview教程视频下载-程序员宅基地

文章浏览阅读218次。《LabVIEW数据采集》视频教程附录1:手把手安装LabVIEW _labview教程视频下载

缓存工具类 使用IO流写入本地文件_io写入到本地文件-程序员宅基地

文章浏览阅读227次。/** * Copyright (c) 2012-2013, Michael Yang 杨福海 (www.yangfuhai.com). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the ..._io写入到本地文件

随便推点

畅享能不能升级鸿蒙,Mate 9 也能升级!鸿蒙系统正式发布:老用户爽了-程序员宅基地

文章浏览阅读178次。6 月 2 日晚,HarmonyOS 2.0 及华为智能产品发布会正式召开。华为 CEO 余承东带来了全新的 HarmonyOS,并喊出了 " 一生万物,万物归一 " 的口号。关于 HarmonyOS,之前已经公布了许多信息,它不仅仅是手机系统,而是一个可以实现万物互联的分布式系统。在此之前,没有任何系统可以覆盖任何设备,毕竟许多设备的运行内存非常小,HarmonyOS 不同,即便是只有 128K..._畅享5会升级鸿蒙

精选10款超酷的HTML5/CSS3菜单-程序员宅基地

文章浏览阅读358次。今天向大家精选了10款超酷的HTML5/CSS3菜单,给你的网页添加不一样的精彩,一起来围观一下吧。1、CSS3手风琴菜单 下拉展开带弹性动画利用CSS3技术可以实现各种各样的网页菜单,我们之前也在CSS3菜单栏目中分享了许多CSS3菜单。今天我们分享的这款是CSS3手风琴菜单,菜单项在展开和收缩的时候菜单项会有弹性动画效果。每一层父级菜单有一个小三角,菜单项在展开的时候这个小三角也会出现动画,非..._css3 实现卷轴效果展开画面

前端架构: 从vue-cli探究脚手架原理-程序员宅基地

文章浏览阅读1.6k次,点赞25次,收藏24次。脚手架本质是一个操作系统的客户端在终端中去执行一个命令,这个命令本身它就是一个客户端我们其实可以把脚手架理解为操作系统的一个客户端通过命令去执行它的时候,这个命令往往是这样的一个构造,如下比如:要创建一个vue的项目的时候, $上面这条命令由3个部分组成主命令: vue这个 command 是子命令,实际上它向脚手架(主命令)发送一个请求这个请求,让我们的脚手架帮我们完成一个动作,完成这个动作,就是create创建项目command的param: vue-test-app。

SwitchyOmega 配置前端代理_switchy omeaga 前端-程序员宅基地

文章浏览阅读3.6k次,点赞2次,收藏3次。switchyomega 使用简介 - 解决前端开发与不同后端联调问题!不管前端开几个服务,不管后端接口多少对接人。 一招搞定。_switchy omeaga 前端

AD+radius完成802.1X认证_ad radius-程序员宅基地

文章浏览阅读2.9k次。实际部署中,AD域、radius,应在搭配交换机、无线路由器或AP,完成基于AD域验证通过有线和无线连接的802.1X认证。本次采取寻找华为交换机、AP产品文档添加相关配置,未经测试,不一定能通。尽管交换机端口已关闭,但用户可以通过身份验证协议与 RADIUS 服务器通信。验证通过,RADIUS服务器会告诉交换机打开端口,用户将获得对网络的访问权限。FreeRADIUS部署在centos7上,需要将RADIUS服务器加入域控(加入域控需要安装samba)。AD域中配置该账号,配置完毕后centos上验证。_ad radius

mysql中设置时区_mysql时区设置-程序员宅基地

文章浏览阅读4.7w次,点赞11次,收藏31次。首先,查看下mysql中使用的时区 show variables like '%time_zone%';测试查看下时间 select now();2018-10-24 15:49:17这个应该是没有设置时区1 通过命令修改设置为 东八区set global time_zone = '+8:00';重启连接之后,查看 show variables l..._mysql时区设置