华为OJ 一个精度问题
2014-03-05 19:08
274 查看
第一段
第二段
double有8字节,int就4字节,如果n够大,最后求倒数会造成精度不够,加的方法也应该从最小的往最大的相加
double Fact(int k) { double result=1.0; for(int i=1;i<=k;i++) result*=(double)i; return 1.0/result; } void GetResult(int InputNum, double *NumResult) { *NumResult=0.0; for(int i=InputNum;i>=1;i--) { *NumResult+=Fact(i); } return ; }
第二段
int Fact(int k) { int result=1.0; for(int i=1;i<=k;i++) result*=i; return result; } void GetResult(int InputNum, double *NumResult) { *NumResult=0.0; for(int i=InputNum;i>=1;i--) { *NumResult+=(double)1/Fact(i); } return ; }第一段 得到的答案比第二段精度要高,原因在于:
double有8字节,int就4字节,如果n够大,最后求倒数会造成精度不够,加的方法也应该从最小的往最大的相加
相关文章推荐
- 安卓开发的简易计算器
- js学习笔记 chapter7 小结
- mysql 检索数据库中包含某几个字段的表 & 检索表名称包含某些字符的表
- 零基础学小议LLVM
- java synchronized详解
- 查找整数
- SSH框架中配置log4j日志以及Struts2配置异常处理方法
- poj 1258 prim
- ios push(python编程)
- Failed build maven-gpg-plugin in openstack-java-sdk
- android笔记 - 网络状态判断
- 大型网站技术架构
- 解决infobright 的group by 因为NULL值,会出现两条一样的结果的问题
- myeclipse关联hibernate源码
- 【POJ】【P3422】【Kaka's Matrix Travels】【题解】
- Linux环境下安装JDK1.6
- IIS7下ajax报未定义错误
- zend_Application 的几个作用
- Ganymed SSH-2 for Java系列10之scpGet
- Fiddler实现手机的抓包