发布于2021-06-12 14:14 阅读(794) 评论(0) 点赞(6) 收藏(2)
众所周知我们的int、double类型都是固定的大小,一旦超出了最大值就会出现数据错误的现象,比如20的阶乘就算使用long类型也不能装下,所以Java中编写了大数类BigInteger和BigDecimal。
核心:大数类的数据类型其根本就是string类型,所以它才可以存储无限长的数据
使用:大数类的使用方法与类的使用是相同的
- import java.math.BigInteger;
- /**
- * BigInteger:大整型数据,数据类型是string类型,所以可以存放超大级数
- */
- public class BigIntegerDemo {
-
- public static BigInteger jc(int n) {
- if (n == 1) {
- return BigInteger.valueOf(n);//类的类方法,将int类型转换为string类型
- }
- BigInteger result = new BigInteger("1");//初值为1,注意是字符类型要用"",
- for (int i = 1; i <= n; i++) {
- result = result.multiply(BigInteger.valueOf(i));
- //乘法:大数对象调用乘法方法,并且把int类型的i转换为string类型
- }
- return result;
- }
-
- public static void main(String[] args) {
- System.out.println(BigIntegerDemo.jc(6)); //计算100的阶乘
- }
-
- }
计算20的阶乘:
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- /**
- * BigDecimal:大数级的的小数类型,存放类型是string的。需要转换为string类型
- */
- public class BigDecimalDemo {
-
- //设计一个1除以一个整数生成的大数级小数
- public static BigDecimal oneDivideDecimal(int n) {
- BigDecimal one = new BigDecimal("1");//分子为1
- BigDecimal result = one.divide(BigDecimal.valueOf(n), 200, BigDecimal.ROUND_HALF_UP);
- //3个参数:第一个是分母、第二个是小数点后保留位数、第三个是舍入方式
- return result;
- }
-
- public static void main(String[] args) {
- System.out.println(BigDecimalDemo.oneDivideDecimal(666));//1/666产生一个循环小数
- }
- }
计算1/666:
原文链接:https://blog.csdn.net/weixin_45947938/article/details/117731122
作者:快起来搬砖啦
链接:http://www.javaheidong.com/blog/article/222306/5233fe06490c1572d180/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!