第一个Java的算法程序。记得可以使用Alt+'/'自动补全sysout和main之类的。

BigInteger在java.math.BigInteger中。

import java.math.BigInteger;
import java.util.Scanner;public class Main {public static void main(String args[]) {Scanner sc=new Scanner(System.in);BigInteger a=sc.nextBigInteger();BigInteger b=sc.nextBigInteger();BigInteger c=a.add(b);System.out.println(c);sc.close();}
}

顺便把A*B也搞了,Java是有FFT优化的乘法。

import java.math.BigInteger;
import java.util.Scanner;public class Main {public static void main(String args[]) {Scanner sc=new Scanner(System.in);BigInteger a=sc.nextBigInteger();BigInteger b=sc.nextBigInteger();BigInteger c=a.multiply(b);System.out.println(c);sc.close();}
}

减法也就是变成subtract罢了。

斐波那契大数:

import java.math.BigInteger;
import java.util.Scanner;public class Main {public static void main(String args[]) {Scanner sc=new Scanner(System.in);while(sc.hasNext()) {int n=sc.nextInt();BigInteger f0=BigInteger.ONE;BigInteger f1=BigInteger.ONE;for(int i=1;i<n;i++) {BigInteger t=f1;f1=f0.add(f1);f0=t;}System.out.println(f1);}sc.close();}
}


https://www.luogu.org/problemnew/show/P1604

Java的高精度整数还有很多意想不到的神奇功能。例如BigInteger其实可以修改进制。

在读入的时候先用String暂时保存结果,生成BigInteger的时候在第二个参数指定进制,在BigInteger的toString方法也可以指定进制。当需要进制转换时使用String作为中转就可以了。

import java.math.BigInteger;
import java.util.Scanner;public class Main {public static void main(String args[]) {Scanner sc=new Scanner(System.in);while(sc.hasNext()) {int b=sc.nextInt();String sa=sc.next();String sb=sc.next();BigInteger ba=new BigInteger(sa,b);BigInteger bb=new BigInteger(sb,b);BigInteger bc=ba.add(bb);System.out.println(bc.toString(b).toUpperCase());}sc.close();}
}


要计算阶乘的和,熟悉一下BigInteger的初始化方法以及与正常的整数运算的方法:

import java.math.BigInteger;
import java.util.Scanner;public class Main {public static void main(String args[]) {Scanner sc=new Scanner(System.in);while(sc.hasNext()) {int n=sc.nextInt();BigInteger ans=BigInteger.ZERO;BigInteger fac=BigInteger.ONE;for(int i=1;i<=n;i++) {fac=fac.multiply(BigInteger.valueOf(i));ans=ans.add(fac);}System.out.println(ans);}sc.close();}
}


BigDecimal高精,注意BigDecimal的toString可能会出现科学计数法的结果。

注意!除法可能商是无限循环小数,这时候必须截断!

public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode);

其中scale是小数点后的精度。

而roundingMode也就是舍入模式:

输入RoundingMode.之后会出现如下:

CEILING    //向正无穷方向舍入
FLOOR    //向负无穷方向舍入

DOWN    //向零方向舍入
UP    //向远离0的方向舍入

HALF_DOWN    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5
HALF_UP    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6

HALF_EVEN    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN

UNNECESSARY    //计算结果是精确的,不需要舍入模式

四舍五入就是是用

ROUND_HALF_UP

而直接设置截断时,使用:

public static void main(String[] args)
{BigDecimal a = new BigDecimal("4.5635");a = a.setScale(3, RoundingMode.HALF_UP);    //保留3位小数,且四舍五入
    System.out.println(a);
}

第一次使用BigDecimal的题:

https://www.luogu.org/problemnew/show/P1517

import java.math.BigDecimal;
import java.util.Scanner;public class Main {public static void main(String args[]) {Scanner sc=new Scanner(System.in);while(sc.hasNext()) {BigDecimal x=sc.nextBigDecimal();int n=sc.nextInt();BigDecimal ans=BigDecimal.ONE;for(int i=0;i<n;i++) {ans=ans.multiply(x);//BigDecimal的乘法需要调用multiply()方法,乘以一个BigDecimal对象,返回一个BigDecimal对象
            }String s=ans.toPlainString();//在这里要使用toPlainString()方法,默认的toString()方法在某些情况是科学计数法,错了很多次才知道/** 例如样例:* 0.000001 5 */int len=s.length();int leadzero=-1;boolean metdot=false;for(int i=0;i<len;i++) {if(leadzero==-1&&s.charAt(i)!='0') {leadzero=i;//把整数部分的0去掉
                }if(s.charAt(i)=='.') {metdot=true;//遇到了小数点,说明是小数break;}}if(metdot==true) {s=s.substring(leadzero);//遇到了小数点,说明是小数len=s.length();//重新计算s的长度,因为前面可能截断了整数部分的0int releadzero=-1;for(int i=len-1;i>=0;i--) {if(s.charAt(i)!='0') {releadzero=i+1;//遇到第一个非零位置,其后的无效0截断if(s.charAt(i)=='.') {releadzero=i;//遇到第一个非零位置是小数点,连小数点也截断
                        }break;}}s=s.substring(0,releadzero);}else {//没有遇到小数点,是整数,不可能有无效0
                ;}System.out.println(s);}sc.close();}
}

转载于:https://www.cnblogs.com/Yinku/p/10659597.html

Java简单高精度合集相关推荐

  1. 【毕设|Java项目开发合集】(附源码)

    [毕设|Java项目开发合集] 14个Java项目(附源码)助你轻松搞定毕业设计! 1.新冠疫情统计系统 2.家教系统 3.进销存管理系统 4.饮食分享平台 5.宠物领养平台 6.销售评价系统 7.酒 ...

  2. Java面试核心知识点(283页)Java面试题合集最新版(485页)

    阿里.腾讯两大互联网企业传来裁员消息,很多人都陷入担心,不安情绪蔓延-- 其实大家应该更冷静和理性地看待大厂裁员.每年三四月都是大厂人员调整期,这个季节是各个公司战略调整.战略规划的一个关键期,肯定会 ...

  3. java入门笔记合集(杂乱)(2)

    java入门笔记合集(杂乱)2 StringBuilder 这是一个容器,可以和String搭配起来用 package day1;import java.util.Scanner;public cla ...

  4. 【Java游戏开发合集】毕业设计(附源码+资料+课件)

    为正在准备毕业设计的小伙伴们以及想自学一些Java练手项目,小编终于整理出了本套视频课程(附源码+资料+课件),快来白嫖吧!!! 视频教程链接: 全站最全Java游戏合集!毕业设计!(附源码课件)8款 ...

  5. 【死磕Java并发】----- 死磕 Java 并发精品合集

    原文出处:https://www.cmsblogs.com/category/1391296887813967872 『chenssy』 [死磕 Java 并发]系列是 LZ 在 2017 年写的第一 ...

  6. 26款JAVA毕设项目合集【java课设】

    最新最全的JAVA项目合集来啦,看完这26套毕设不再发愁 最近UP整理了一些Java项目,从初级练手项目到企业级电商项目,全部配备源码及笔记,如果你能全部吃透,直接成神,各个大厂都为你打开大门! 大家 ...

  7. Java——集合(合集,简单的概括)

    JAVA --集合 集合 概念: 1 .Collection接口与Iterator接口 2 .Collection<>接口 3 . List<>接口 3 .1 ArrayLis ...

  8. leetcode 简单题合集(Java版)

    326. 3的幂 https://leetcode-cn.com/problems/power-of-three/ 题解: class Solution {public boolean isPower ...

  9. Java 小练习(简单)—合集

    文章目录 1.while循环练习:回文数 2.for循环练习:求平方根 3.for循环练习:求质数 4.while循环练习:数字炸弹小游戏 5.数组练习:遍历数组求和 6.数组练习:交换数组中的数组 ...

最新文章

  1. 爱不释手(Typingfaster)1.78beta,重大升级,欢迎试用,期待反馈。
  2. CMU 刘畅流:爱上人机交互源于科幻片,女性研究AI更感性、更哲学 | 妇女节特辑...
  3. java数字转大写 其他报异常_【踩坑系列】使用long类型处理金额,科学计数法导致金额转大写异常...
  4. 数据库:分享四个实用的SQLServer脚本函数,欢迎收藏
  5. 决策树C4.5算法的不足
  6. 区块链(BlockChain)基础概念
  7. PyQt5实现局域网聊天工具
  8. H5游戏开发框架排名
  9. recyclerView多条目加载,点击动画事件
  10. EPC项目设计界面管理研究——以上海国际金融中心项目为例
  11. 什么是Map Reduce
  12. IOS微信内置浏览器音频加载问题
  13. 用汇编语言编程的计算机
  14. 1万元左右理财方法有那些
  15. Python3网络爬虫实战-38、动态渲染页面抓取:Splash的使用
  16. 小马哥 ------高仿三星S5刷机 高仿三星G9006系列拆机主板机型图与开机界面图
  17. 【数据结构】图的基本操作
  18. NANDFLASH介绍(转)
  19. 黑科技揭秘:面对海量的文本翻译任务,阿里翻译团队是如何解决的 1
  20. 百度百科关键词搜索获取信息

热门文章

  1. Python 中的黑暗角落(一):理解 yield 关键字
  2. django 热启动_传统的Web框架如何部署在Serverless架构上(以Flask为例)
  3. ffmpeg 硬解码
  4. python文本编码转换_python实现文件批量编码转换及注意事项
  5. 如何从数据库中筛选出达成指定里程碑节点的项目_如何用共识算法构建区块链共识网络?...
  6. nodejs实践录:简单的log日志模块
  7. Elasticsearch】 es Match Query
  8. 【Spring】spring depend-on 到底是干什么的?
  9. Spring: @Import @ImportResource引入资源
  10. Spark编译报错:missing or invalid depency detected while loading class file RDDOperationScope.class