首页 > 其他 > 详细

double类型的精度问题

时间:2018-06-03 15:59:14      阅读:199      评论:0      收藏:0      [点我收藏+]

https://www.nowcoder.com/acm/contest/127/E

一道很简单的期望题,已知概率p求期望

显然期望为1/p

但在精度处理上就有点麻烦了,题目要求答案以最简分数的形式输出,误差要小于1e-6

但我一开始错误的使用了除法运算求1/p,再求(1/p*1e6)/1e6的最简分数

很显然精度丢失

这是一条大忌,在高精度问题中一定要避免使用除法

所以正解是求1e6/(p*1e6)的最简分数

但这里又有一个精度问题,我们算式里的p,是对题目给出数据q,求p=1.0-q得到的

如果我们直接求1.0-q,同样会丢失精度(经测试,1.0-q只保留小数点后6位,会导致最终误差会大于1e-6)

但先乘以1e6就可以避免这个问题,所以解为1e6/(1e6-1e6*q)

 

所以在高精度问题中,尽量避免除法,在加减法中也要提防精度丢失

double类型的精度问题

原文:https://www.cnblogs.com/qq936584671/p/9129360.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!