利用BigDecimal精确计算欧拉数小数点后面1000位

相信大家对于泰勒展开已经稔熟于心,接下来我们就利用下列的泰勒展开: e x = 1 + 1 1 ! x + 1 2 ! x 2 + 1 3 ! x 3 + . . . . . . . + 1 n ! x n \qquad e^x = 1+\frac{1}{1!}x+\frac{1}{2!}x^2+\frac{1}{3!}x^3+.......+\frac{1}{n!}x^n ex=1+1!1​x+2!1​x2+3!1​x3+.......+n!1​xn
当展开式满足下列条件时: x = 1 \qquad x =1 x=1

可推出如下结论:
e 1 = 1 0 ! + 1 1 ! + 1 2 ! + . . . . . . . . . . + 1 ( n − 1 ) ! + 1 n ! \qquad e^1 = \frac{1}{0!}+\frac{1}{1!}+\frac{1}{2!}+..........+\frac{1}{(n-1)!}+\frac{1}{n!} e1=0!1​+1!1​+2!1​+..........+(n−1)!1​+n!1​

用代码进行实现

// An highlighted block
package Exe5;import java.math.BigDecimal;public class Demo {/** main-method */public static void main(String[] args) {int num1 = 10000;BigDecimal temp1 = new BigDecimal(num1);System.out.println(valueOfEuler(temp1));System.out.println("===============================");int num2 = 20000;BigDecimal temp2 = new BigDecimal(num2);System.out.println(valueOfEuler(temp2));System.out.println("===============================");int num3 = 30000;BigDecimal temp3 = new BigDecimal(num3);System.out.println(valueOfEuler(temp3));}/*** approximately value of nature Euler scale** @param num* @return value of Euler*/public static BigDecimal valueOfEuler(BigDecimal num) {//初始化自然对数也就是欧拉数double euler = 0;//初始化赋值1 用来和num比较以便控制累加次数double temp = -1;//temp2作用为提供 num个1来累加double temp2 = 1;//将double型欧拉数字转化为BigDecimal//将temp也转化为BigDecimal//将temp2也转化为BigDecimalBigDecimal newEuler = new BigDecimal(euler);BigDecimal newTemp = new BigDecimal(temp);BigDecimal newTemp2 = new BigDecimal(temp2);//运用compareTo()方法控制累加次数do {// newTemp++newTemp = newTemp.add(newTemp2);// e = 1/0!+ 1/1!+1/2!+......+1/num!newEuler = newEuler.add(newTemp2.divide(ComputeFactorial(newTemp), 1000, BigDecimal.ROUND_UP));//直到newTemp自己加到与num相等后} while (newTemp.compareTo(num) == -1);//返回欧拉数return newEuler;}/*** 大数阶乘方法*/public static BigDecimal ComputeFactorial(BigDecimal num) {//初始变量 值为1int s = 1;//改变数据类型BigDecimal begin = new BigDecimal(s);//如果导入的参数num > begin,则返回1if (num.compareTo(begin) == 1) {//结果result = num*(num-1)BigDecimal result = num.multiply(num.subtract(begin));//返回结果 result = num * (num - 1) * (num - 2) * (num -3) .....* 1 两两一组以此递归return result.multiply(ComputeFactorial(num.subtract(begin.add(begin))));}//如果相等过后返回begin begin的值为1else {return begin;}}
}

输出语句

由于计算量很大目前只展示

int num = 10000;
BigDecimal newNum = new BigDecimal(num);
System.out.println(ValueOfEuler(newNum));

结果展示

【JavaBigDecimal练习】利用BigDecimal精确计算欧拉数相关推荐

  1. Java中使用BigDecimal进行浮点数精确计算 超大整数 浮点数等计算,没有数位限制...

    (注:前面写了一个超大整数相加的类,参见: 超大整数相加,超过了long的范围,你要怎么做!,后来有朋友评论说BigDecimal可以完全实现我的这这个功能,刚开始的时候,我还不服气,据我所知那里有这 ...

  2. Java中使用BigDecimal进行浮点数精确计算 超大整数 浮点数等计算 没有数位限制

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! (注:前 ...

  3. java金额比较大小_JAVA中精确计算金额BigDecimal

    packagecom.chauvet.utils;importjava.math.BigDecimal;importjava.text.DecimalFormat;importjava.text.Nu ...

  4. android int 首位值_Android中数值的精确计算

    Android中数值计算的精度 在平常的开发中,会经常进行数值的计算,而如何才能更加准确的得到计算结果是最重要的,最近在做一个金融类的项目,其中涉及到黄金的计算,所以写这篇文章来总结一下,如何对数值的 ...

  5. java 小数精确_Java中小数精确计算

    小数精确计算 System.out.println(2.00 -1.10);//0.8999999999999999 上面的计算出的结果不是 0.9,而是一连串的小数.问题在于1.1这个数字不能被精确 ...

  6. java 精确 计算_java中进行高精度精准计算

    今天在做接口传保费的时候出现了一个奇怪的问题,double类型保费变成了一大长串的非精准保费,甚至奇怪,难道是java的bug?最后通过度娘找到了答案 话不多说,先看如下代码public final ...

  7. 7-2 jmu-Java-02基本语法-05-浮点数的精确计算 (1 分)

    7-2 jmu-Java-02基本语法-05-浮点数的精确计算 (1 分) 输入若干对浮点数,对每对浮点数输出其精确的和与乘积. 以下输入样例为两对浮点数输入,实际上有可能有不定对数的浮点数需要输入计 ...

  8. 第二章 Java浮点数精确计算

    1.实际意义 在实际开发中,如果需要进行float或double的精确计算(尤其是财务计算),直接使用float或double是不行的(具体的例子看下边的代码的main方法的测试结果),需要使用Big ...

  9. python计算圆周率近似值_怎样利用python来计算出圆周率π-百度经验

    怎样利用python来计算出圆周率π? 方法/步骤 1 圆周率π是一个无理数,没有任何一个精确公式可以计算出π值,π的计算只能采用近似算法. 我们利用蒙特卡洛方法来求得π的近似值. 蒙特卡洛方法是利用 ...

最新文章

  1. Microsoft Windows 7.0 build 7000 NAP测试--健康状态检测验证报告
  2. Java 从网络上下载文件
  3. Summary Day30
  4. 机器学习的一些注意事项
  5. python网络爬虫 抓取金融分析师名单
  6. 雪色光晕(计算几何+暴力)
  7. NSData的同步下载与NSConnection的同步下载
  8. BGP选择路由的策略
  9. 关于brvah的setEmptyView功能无法显示问题
  10. 屏蔽拦截广告(一、PC端浏览器)
  11. mysql随机抽样方法_MySQL中随机抽样
  12. 墙裂推荐9个在线图片压缩网站
  13. 安全公司发现雄迈数字摄像机的主控口令“已泄露”
  14. Gamit 数据处理,相关的文件配置
  15. 华为云服务器安全组端口开放教程
  16. PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive Learning
  17. 【沃顿商学院学习笔记】宏观经济学——11全球治理Global Governance
  18. Unknown column 'xxx' in 'field list'
  19. Python 获取当前时间 年-月-日-时-分-秒
  20. OPKG包管理系统详解!带你管理OpenWrt系统软件

热门文章

  1. 今天分享给你几个绘制Excel表格的技巧
  2. Android——UI开发的点点滴滴1
  3. Unity3d shader 教程一 准备
  4. 【HBase 进阶】-- Region 过多的影响 合理分区数量
  5. oracle查询dictionary,Oracle的DICTIONARY/DICT视图。
  6. Rust语言正在兴起,Java、Python、C的末日来临?
  7. 卷王指南,大学计算机专业,面临分专业,计科,软工,大数据,物联网,网络工程,该选什么?
  8. 投资、投机、赌博、交易
  9. 1,515美元的价格可让您驾驭野兽式机械套装
  10. 宿舍路由器设置傻瓜教程