`

实例036 - 用while循环计算1+1/2!+1/3!...1/20!

 
阅读更多

心法领悟036:使用BigDecimal类完成大数字与高精度运算。

对于高精度要求或大数字的计算,应该使用BigDecimal或BigInteger类,否则Java基本类型的数据无法保证浮点数的精度,也无法对超出其表示范围的数字进行运算。

import java.math.BigDecimal;
public class Example {
    public static void main(String args[]) {
        BigDecimal sum = new BigDecimal(0.0); // 和
        BigDecimal factorial = new BigDecimal(1.0); // 阶乘项的计算结果
        int i = 1; // 循环增量
        while (i <= 20) {
            sum = sum.add(factorial); // 累加各项阶乘的和
            ++i; // i加1
            factorial = factorial.multiply(new BigDecimal(1.0 / i)); // 计算阶乘项
        }
        System.out.println("1+1/2!+1/3!···1/20!的计算结果等于:\n" + sum); // 输出计算结果
    }
}

 

1+1/2!+1/3!···1/20!的计算结果等于:
1.71828182845904522367258882524732563634867246268558104448130832136101139366719986414383110243797108748822820657493330665752903534700022508204525385549479876951292493516361991885142411580915233808389198581342610980977425822951724476374113374431295345516733481291917383751991568557019209000617394017755970330759280319424925748716392429788018461622511631047241914024775263254452027548084334842631749679270930789639542724477953673333791555400257219557963341089085618184152725912383836106812569589258574113531875910271222819280308083619226237539764181652472718046378704910462924352995976893461209516866339555490458432187283021232937484781081946952237499593023333299830547132009915333667625253213008545235615683712431845561218831886238965727822680526029924244310460181428675093053813137695411922636380686046919663567678071558475494384765625

 

分享到:
评论

相关推荐

    Advanced Bash-Scripting Guide <>

    否定一个条件使用! 7-1. 什么情况下为真? 7-2. 几个等效命令test,/usr/bin/test,[],和/usr/bin/[ 7-3. 算数测试使用(( )) 7-4. test 死的链接文件 7-5. 数字和字符串比较 7-6. 测试字符串是否为null 7-7. zmore 8-1...

    Linux高级bash编程

    否定一个条件使用! 7-1. 什么情况下为真? 7-2. 几个等效命令test,/usr/bin/test,[],和/usr/bin/[ 7-3. 算数测试使用(( )) 7-4. test死的链接文件 7-5. 数字和字符串比较 7-6. 测试字符串是否为null 7-7. zmore 8-1....

    jQuery完全实例.rar

    返回 'true' 跳至下一个循环(就像在普通的循环中使用'continue')。 -------------------------------------------------------------------------------- Execute a function within the context of every matched...

    51单片机C语言编程基础及实例

    #include #define LED P1^1 //用符号 LED 代替 P1_1 用符号 //用符号 KEY_ON 代替 P1_6 用符号 //用符号 KEY_OFF 代替 P1_7 用符号 //单片机复位后的执行入口,void 表示空,无输入参数,无返回值 #define KEY_ON ...

    基于c#CP3平面网严密平差数据处理

    SV[i] = -( X[4]+BS[i, 3] * X[5])+BS[i, 0] * X[1] + BS[i, 1] * X[2] + BS[i, 2] * X[3] - lS[i]; } } public void Cal_SV(double[] SV, double[,] BS, double[] lS, double[] X, int n) { for (int i = 0; ...

    Java经典编程源码基础例程300.zip

    实例027 使用while循环计算1+ 1/2!+1/3!…1/20! 36 实例028 使用for循环输出空心的菱形 38 实例029 终止循环体 39 实例030 循环体的过滤器 41 第5章 数组及其常用操作 43 实例031 获取一维数组的最小值 44 实例032 ...

    Java 2实用教程(第三版)实验指导与习题解答

    Java 2实用教程(第三版)实验指导与习题解答 清华大学出版社 (编著 耿祥义 张跃平) 实验模版代码 建议使用文档结构图 (选择Word菜单→视图→文档结构图) 上机实践1 初识Java 4 实验1 一个简单的应用程序 ...

    计算机程序设计员程序设计实例(1).doc

    程序设计实例 本章介绍了循环程序设计方法,讲述了两种循环程序,三种循环语句。包括前两章 讲述的顺序程序结构、分支程序结构在内,这些控制结构内的语句部分都允许任意形式 的语句。这些控制结构之间可以互相嵌套...

    PL/SQL 基础.doc

    2) WHILE 循环 WHILE boolean_expr(条件) LOOP /* boolean_expr 循环条件*/ ... (循环体) END LOOP; 3) FOR循环 FOR loop_counter IN [REVERSE] low_bound..high_bound LOOP /* 范围中间用2个点表示 从 ...

    IO输入输出留

    IO ============================================================================================================================================= ... 【1】【2】【3】【4】 --》【4】 write ( ...

    C++大学教程

    1.5 个人计算、分布式计算与客户/服务器计算-----------------------------4 1.6 机器语言、汇编语言和高级语言--------------------------------------5 1.7 C语言与C++的历史-------------------------------...

    正则表达式

    无论是用正则表达式直接量还是用构造函数RegExp(),创建一个RegExp对象都是比较容易的.较为困难的任务是用正则表达式语法来描述字符的模式. JavaScript采用的是Perl语言正则表达式语法的一个相当完整的子集. 正则...

    高级C语言.PDF

    1. C 语言中的指针和内存泄漏 ............................................................................................................. 5 2. C语言难点分析整理 ..........................................

    你必须知道的495个C语言问题(PDF)

    然后又使用一些内存分配技巧使namestr 数组用起 来好像有多个元素。这样合法和可移植吗? . . . . . . . . . . . . 8 2.7 是否有自动比较结构的方法? . . . . . . . . . . . . . . . . . . . . 8 2.8 如何向接受...

    使用VFP读取EXCEL中的数据示例

    i=i+1 ?objexcel.cells(i,1).value IF !VARTYPE(objexcel.cells(i,1).value)="C" nrow=i-1 EXIT ENDIF ENDDO *nrow=20 LOCAL arecord(16) *MESSAGEBOX("循环添加记录") USE zlb disinf("zlb.dbf中现有...

    java程序是怎么操作数据库的,可以以常用据库为例,求详细解答,最好能举例。

    //下面的语句使用了一个while循环打印出了col_link表中的所有的数据 System.out.println("站点名 "+" "+"站点地址"); System.out.println("---------------"+" "+"----------------"); while (rs.next()) { ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例036 用while循环计算1+1/2!+1/3!…1/20! 45 实例037 for循环输出空心的菱形 46 实例038 foreach循环优于for循环 47 实例039 终止循环体 48 实例040 循环体的过滤器 49 实例041 循环的极限 50 第3章 数组与集合的...

    C 程序指导书及实践指导

    sum=sum+(i+1)*(i+1)*(j+2) printf(“sum is :%d\n”,sum); } [ 分析讨论] (1) 将上述程序中的和分别做什么样修改,能使程序按如下要求运行: .不循环; .外循环1次,不进入内循环; .外循环,内循环各1次; .外...

Global site tag (gtag.js) - Google Analytics