精华内容
下载资源
问答
  • java使用莱布尼茨公式迭代高精度的圆周率
    千次阅读
    2019-07-06 18:31:13

    接着上一篇的门特卡罗方法。

    又去看了一下几个圆周率的算法,挑了莱布尼茨迭代公式:pi/4=1-1/3+1/5-1/7+1/9……

    求出来的结果是(100位小数):

    3.1415926540554545259872230756648344179116320363727376140128713099853213974820294342616300093091457012

    比起之前的门特卡罗方法,这个公式可以更快速的迭代到比较高的精度(6位小数、7位小数)

    受制于循环函数的int限制,在第21亿4千万次迭代后,误差约为4.67289E-10

    下面是具体的代码:

    package HowBigIsPi;
    
    import java.math.BigDecimal;
    
    public class Leibniz {
    	public static BigDecimal mpi = new BigDecimal("0");
    	public static BigDecimal quartermpi = new BigDecimal("0");
    	public static BigDecimal general = new BigDecimal("0");
    	public static BigDecimal mone = new BigDecimal("-1");
    	public static BigDecimal one = new BigDecimal("1");
    	public static BigDecimal two = new BigDecimal("2");
    	public static BigDecimal four = new BigDecimal("4");
    	public static BigDecimal pi = new BigDecimal("-3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679");
    
    	
    	public static void main(String[] args) {
    		System.out.println(mathPart(Integer.MAX_VALUE));
    	}
    
    	private static BigDecimal mathPart(int num) {
    		for (int i = 0; i < num; i++) {
    			general = mone.pow(i%2).divide(two.multiply(BigDecimal.valueOf(i)).add(one), 100, BigDecimal.ROUND_UP);
    			quartermpi = quartermpi.add(general);
    			if(i%10000000 == 0) {
    				System.out.println("当前次数:" + i + ";   deviation ≈ " + quartermpi.multiply(four).add(pi));
    			}
    		}
    		return quartermpi.multiply(four);
    	}
    }
    

     

    更多相关内容
  • Java实现莱布尼兹问题

    2019-07-20 18:08:00
    历史上有许多计算圆周率p...

    历史上有许多计算圆周率pai的公式,其中,格雷戈里和莱布尼茨发现了下面的公式:

    pai = 4*(1-1/3+1/5-1/7 …)

    参见【图1.png】

    这个公式简单而优美,但美中不足,它收敛的太慢了。
    如果我们四舍五入保留它的两位小数,那么:

    累积1项是:4.00
    累积2项是:2.67
    累积3项是:3.47
    。。。

    请你写出它累积100项是多少(四舍五入到小数后两位)。

    注意:只填写该小数本身,不要填写任何多余的说明或解释文字。

    答案:3.13

    在这里插入图片描述

    public class Main {
        
        public static void main(String[] args) {
            double result = 0;
            for(int i = 1;i <= 100;i++) {
                double b = 2 * i - 1;
                if(i % 2 == 1) {
                    result = result + 1 / b;
                } else {
                    result = result - 1 / b;
                }
            }
            System.out.printf("%.2f", (4*result));
        }
        
    }
    
    展开全文
  • pi的莱布尼兹公式 参考维基 //莱布尼兹公式求解pi值 public class Example3_11 { public static void main(String[] args) { int i = 1 , sign = 1; double item , pi = 0; do{ item = sign * 1.0 / ...

    短小精悍
    pi的莱布尼兹公式 参考维基
    pi的莱布尼兹公式

    //莱布尼兹公式求解pi值
    public class Example3_11
    {
    	public static void main(String[] args)
    	{
    		int i = 1 , sign = 1;
    		double item , pi = 0;
    		
    		do{
    			item = sign * 1.0 / i;
    			pi = pi + item;
    			i += 2;
    			sign = -sign;
    		}while(Math.abs(item)>1.0E-6);
    		pi = 4 * pi;
    		System.out.printf("PI=%.6f\n",pi);
    	}
    }
    
    展开全文
  • 小码哥任小龙java基础的excel笔记(完整版), 一个中国人喜欢听的谣言: 其大意是:莱布尼兹(数学家)通过在中国的传教士,得到了八卦图,他领悟到只要把八卦中的阴爻代表0,阳爻代表1,就可以创立一种新的记数法:...
  • Java语言概述

    2021-07-13 13:01:28
    Java语言概述与开发工具 计算机语言概述 一、软件开发 ​ 什么是软件(一系列按照特定顺序组织的计算机数据和指令的集合) 常用软件:系统软件和应用软件 *系统软件 Dos Window Linux , Mac *应用软件 ​ 微信、...

    Java语言概述

    计算机语言概述

    一、软件开发

    ​ 什么是软件(一系列按照特定顺序组织的计算机数据和指令的集合)

    常用软件:系统软件和应用软件

    *系统软件

    Dos Window Linux , Mac

    *应用软件

    ​ 微信、QQ、迅雷等

    *什么是开发

    ​ 制作软件的过程

    *人机交互-使用软件

    ​ 图形化界面

    ​ 命令行方式

    *计算机语言

    ​ 语言:人与人之间的沟通方式(中文,英文等)

    ​ 计算机语言:(人与计算机之间的交流方式)

    ​ C,C++,Java语言等

    二、Java语言简介

    Java概述

    Java图标
    在这里插入图片描述

    Java名称的由来

    我们缩减到的Java标志,总是一杯热咖啡,这杯热咖啡你很难与计算机编程联想到一起。这杯热咖啡,Java这个名字的由来,是Java创始人员团队中其中一名成员由于灵感想到的想起自己在Java岛(爪哇岛)上曾经喝过一种美味的咖啡。
    类文件的前四个字节如果用十六进制阅读的话,分别为CAFEBABE,就会频出两个单词“CAFEBABE”(咖啡宝贝)

    Java之父

    高斯林
    1991年,在Sun公司工作期间,斯林和一群技术人员创建了一个名为Oak的项目 ,开发运行于虚拟机的编程语言,同时允许程序在电视机机顶盒等多平台上运行。后来,这项工作就演变为Java。随着互联网的普及,尤其是网景开发的网页浏览器的面世,Java成为全球流行的开发语言。因此被人称作Java之父。

    Java能够做什么

    1、可以制作网站
    2、可以做Android
    3、可以做游戏
    4、可以做软件

    Java语言特性

    1、简单易用
    2、面向对象
    3、安全性高
    4、多线程
    5、跨平台

    三、Java运行环境

    跨平台原理

    *不同的操作系统自己专门识别的软件格式
    *如果只编写一个Java程序是没有办法在各个系统上运行的
    *Java单独开发了一套(各个平台)一个Java虚拟机的程序
    *编写的Java程序不需要运行在系统当中,而是运行在系统安装的Java虚拟机当中,各个平台上的Java虚拟机都能识别编写的Java程序

    示例图

    在这里插入图片描述

    JVM/JRE/JDK

    JVM:

    Java虚拟机(Java Virtual Machine)它是运行所有Java程序的虚拟计算机
    有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行

    JRE:

    JRE是java runtime environment (java运行环境)
    洧JVM还不能让class文件执行,因为在解释class的时候 IVM需要调用解释所需要的类库lib
    jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm, lib中则是jvm工作所需要
    的类库,而jym和lib和起来就称为jre

    JDK

    JDK是java development kit (java开发工 胞)
    程序员做Java开发时所需要的- -些工avac.exe/jar.exe Java基础的类库/API

    关系

    JDK包含JRE,而JRE包含JVM

    下载安装

    https://www.oracle.com/technetwork/java/javase/archive-%20139210.html

    环境变量配置

    配置环境变量的目的

    *当查找一个命令的时候,会默认到当前目录当中去查找执行
    *如果当前目录当中没有,就会到系统的环境变量当中查找

    配置环境变量的步骤

    第一步
    在这里插入图片描述
    第二步
    在这里插入图片描述
    第三步
    在这里插入图片描述
    第四步
    进入环境变量后,双击path
    在Path中添加地址
    在这里插入图片描述

    四、第一个Java程序

    第一个Java程序HelloWorld

    示例:class Hello{ public static void main(String[] args){ System.out.println("Hello World");} }

    在这里插入图片描述

    在这里插入图片描述
    *1.将Java代码编写到扩展名为.java的文件当中
    *2.通过javac命令对该java文件进行编译,并生成一个扩展名为.class的文件
    *3.通过java命令对生成的class文件进行运行
    *我们生成字节码的名称他跟class的名称一样的
    *如果我们在class钱添加了一个public,那么你的文件名称必须得要跟class的名称保持一致

    Java编译过程在这里插入图片描述

    五、IDEA开发工具使用

    详情请看
    https://blog.csdn.net/ccf123624/article/details/118752646

    六、进制

    进制概念

    什么是进制

    进制:就是进位制,是人们规定的一种进位方法
    对于任何一种进制–X进制,就表示某一位置上的数运算时是逢X进一位
    二进制就是逢二进一
    0/1
    八进制是逢八进一
    十进制是逢十进一
    十六进制是逢十六进一

    十进制的由来

    十进制的由来是因为人类有十个手指

    二进制的由来

    其实二进制来源与中国
    18世纪德国数理哲学大师莱布尼兹从他的传教士朋友鲍威特寄给他的拉丁文译本《易经》中,读到了八卦的组成结构,惊奇地发现0和1分别为表示数字原点的特殊数和基本数
    其进位制就是二进制,并认为这是世界上数学进制中最先进的
    20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,其运算模式正是二进制
    在这里插入图片描述

    八进制的由来

    任何数据在计算机中都是以二进制的形式存在的。
    二进制早期由电信号开关演变而来。一个整数在内存中一样也是二进制的
    但是使用一大串的1或者0组成的数值进行使用很麻烦
    所以就想把一大串缩短点,将二进制中的三位用一位表示
    这三位可以取到的最大值就是7.超过7就进位了,这就是八进制。
    在这里插入图片描述

    十六进制的由来

    对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况
    四个二进制位最大是15,这就是十六进制
    	0...9 A B C D E F
    

    在这里插入图片描述

    进制的表现形式

    二进制

    由0,1组成。以0b(b可以大写也可以小写)开头
    0b010101
    0b1010

    八进制

    由0,1,…7组成。以数字“0”开头
    	07
    	7
    

    十进制

    由0,1,…9组成。整数默认是十进制的 
    

    十六进制

    由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头 
    	0XF
    
    进制之间转换
    十进制转二进制

    示例6.
    在这里插入图片描述
    在这里插入图片描述

    二进制转十进制

    传统十进制

    二进制转十进制
    在这里插入图片描述

    八进制, 与16进制先转二进制, 再进行其它进制之间的转换
    0b10001111
    0x8F
    0b10001111

    原码/反码/补码

    概念
    人脑可以知道第一位是符号位,可以根据符号位对真值的绝对值进行加减乘除
    但是对于计算机来说,加减乘除是最基本的运算,要设计的尽量简单
    计算机辨别符号位会让计算机的设计电路变得很复杂
    于是人们想出了让符号位也参与到运算上来。减去一个数,等于加上他的负数
    0就代表正数,1代表负数 第1位为符号位

    正数

    假设机器字长(处理的位数为8位)
    数字1
    00000001
    00000001
    00000001

    负数

    -1
    10000001
    原码:符号位为1其余各位不变
    1 1 1 1 1 1 1 0
    反码:符号位不变,其余各位取反
    1 1 1 1 1 1 1 1
    补码:符号位不变,其位各位取反后加1
    对补码取返加1 得到原码

    七、语法规则

    字面量和常量

    	程序中固定不变化的值。定义了就不能再去修改,比如:整数常量1,2,3,小数常量3.14,布尔常量false,true等。.
    	字面量,就表示直接给出的一个值(可以是整数,小数,true,false等等),直接量.
    	常量分类
    		整数常量
    		小数常量
    		布尔型常量
    		字符常量
    		字符串常量
    		null常量
    		示例
    			
    	整数常量的表现形式
    		二制制
    		八进制
    		十进制
    		十六进制
    

    变量

    	概念
    		其 值可以发生改变的量, 定义完毕后可以指代某一事物
    	定义
    		数据类型  变量名  =  初始化值;
    	特点
    		1.占据着内存中的某一块存储区域;
    		2.该区域有自己的名称(变量名)和类型(数据类型);
    		3.可以被重复使用;
    		4.该区域的数据可以在同一类型范围内不断变化;
    

    标识符

    	什么是标识符
    		在写代码的时候为了增强代码的阅读性会自定义很多名字,比如:类名,方法名,变量名等
    		编程的里我们把这种为了增强程序阅读性而自定义的名称,称为标识符
    	命名规则
    		1.由字母、数字、下划线、$组成,但不能以数字开头(注:此处的字母可以是中文等)
    		2.区分大小写
    		3.不得使用java中的关键字和保留字
    		4.不用Java中内置的类名作为自己的类名
    	示例
    

    关键字

    	什么是关键字
    		在编程语言中有一些事先定义的,有着特殊含义和用途的单词
    	什么是保留字
    		和关键字一样都是编程语言事先定义好的,只是说现在暂时没有特殊的用途
    		但说不定以后某天会突然被赋予意义和被使用到,因此被保留下来的单词,goto和const就是Java的保留字
    	有哪些关键字
    

    表达式

    	定义
    		是由数字、运算符、数字分组符号(括号)、常量、变量等以能求得结果的有意义排列的组合
    		用运算符号连接的变量/常量可称为表达式
    

    注释

    	注释的作用
    		注释信息是给程序员看的
    		编译器(javac)在编译的时候会忽略掉源文件中的注释信息
    	注释分类
    		单行注释
    			//注释信息
    			从//开始到本行结束的所有字符会被编译器忽略;
    		多行注释;
    			/* 注释信息 */
    			/* 注释信息 */之间的所有字符会被编译器忽略
    		文档注释;
    			/** 注释信息 */
    			/** 注释信息 */和多行注释一样,除此之外还可以专门生成文档信息API
    

    注释示例:
    在这里插入图片描述

    展开全文
  • java中二进制怎么表示

    千次阅读 2021-02-01 06:12:57
    它的基数e68a8462616964757a686964616f31333363376537为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中...
  • 1.表示方法:在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。(1)正数的最高位为0,其余各位代表数值本身(二进制数)。(2)对于负数,通过对该数绝对值...
  • Java-Day02,进制转换

    2021-03-13 02:05:19
    一、Java语言基础(常量的概述和使用)(掌握)* 1、什么是常量*在程序执行的过程中其值不可以发生改变* 2、Java中常量的分类*字面值常量*自定义常量(面向对象部分讲)* 3、字面值常量的分类*字符串常量 用双引号括起来的...
  • 在这一篇文章中,我将介绍函数式编程的基本概念,如何使用函数式编程的思想编写代码以及 Java Stream 的基本使用方法。 本文不会涉及到任何晦涩难懂的数学概念,函数式编程的理论以及函数式编程的高阶特性,譬如:...
  • 它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则...
  • 2014-/Province_Java_A/2/ 历史上有许多计算圆周率pai的公式,其中,格雷戈里和莱布尼茨发现了下面的公式: pai = 4*(1-1/3+1/5-1/7 ....) 参见【图1.png】 这个公式简单而优美,但美中不足,它收敛的太慢了。...
  • 它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则...
  • public abstract class Calculate {public Calculate(){}public abstract double function(double x);public abstract double function(double x.../*** 牛顿-莱布尼兹积分* */public double Integral(double x1,dou...
  • Java那些事儿

    2020-10-02 13:53:51
    Java知识颇多,唯有整理笔记,多看,多想,多思考,才能进阶。 01. Java语言 1.1 Java概述 1.1.1 简介 Java是Sun Microsystems于1995年推出的高级编程语言 1991 年Sun公司的James Gosling等人开始开发名称为 Oak ...
  • 它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则...
  • Java的掩码运算18世纪德国数理哲学大师莱布尼兹从他的传教士朋友鲍威特寄给他的拉丁文译本《易经》中,读到了八卦的组成结构,惊奇地发现其基本素数(0)(1),即《易经》的阴和阳,其进位制就是二进制,并认为这是世界...
  • 软帝学院Java学习笔记Day1Java语言基础(常量的概述和使用)· A:什么是常量o 在程序执行的过程中其值不可以发生改变· B:Java中常量的分类o 字面值常量o 自定义常量(面向对象部分讲)C:字面值常量的分类o 字符串常量 ...
  • if (temp.compareTo(BigDecimal.ZERO) == 0) {// 根据莱布尼兹级数结果=0时返回 break; } if (flag) { result = result.add(temp); flag=false; } else { result = result.subtract(temp); flag=true; } res = res....
  • 02 java语言基础

    2021-02-27 07:49:04
    常量:字面值常量(字符串,字符,整数,小数,布尔,null),自定义常量,''这个不是字符常量,""这个是字符串常量进制:02.01_Java语言基础(常量的概述和使用)A:什么是常量在程序执行的过程中其值不可以发生改变B:Java中常量的...
  • java instanceof操作符使用及原理解析这篇文章主要介绍了java instanceof操作符使用及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下a intanceof A:...
  • java是强类型语言,指的是一旦一个常量或变量声明出来,它的类型就确定了,以后都不会变成其它类型,声明的时候是整型,以后都是整型(ps:javascript是弱类型)var i =10;si = "hello";var d =new Date(); int i =10;i...
  • Java基础(进制转换-)

    千次阅读 2021-02-26 16:21:44
    二进制的由来: 德国著名的数学家和哲学家莱布尼兹,对帕斯卡的加法机很感兴趣。于是,莱布尼兹也开始了对计算机的研究。莱布尼兹也是第一个认识到二进制记数法重要性的人,并系统地提出了二进制的运算法则。二进制...
  • java基础学习

    2021-09-07 01:43:46
    1.1 java语言基础 什么是java语言。 Java语言是美国Sun公司 斯坦福大学网络公司()1995年 Java语言发展史 1995 java 1.0 不是正式版 .... 2004 Java 5.0版本 ... 2009 Oracle 甲骨文收购Sun公司 2011 ...
  • 02.01_Java语言基础(常量的概述和使用)(掌握)* A:什么是常量* 在程序执行的过程中其值不可以发生改变* B:Java中常量的分类* 字面值常量* 自定义常量(面向对象部分讲)* C:字面值常量的分类* 字符串常量用双引号括起来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 399
精华内容 159
关键字:

莱布尼兹java

java 订阅