精确表达浮点数.pdf
《精确表达浮点数.pdf》由会员分享,可在线阅读,更多相关《精确表达浮点数.pdf(3页珍藏版)》请在文库网上搜索。
1、写书评,赢取编程之美- 微软技术 面试心得 精确表达浮点数 在计算机中,使用 float 或者 double 来存储小数是不能得到精确值的。如果 你希望得到精确计算结果, 最好是用分数形式来表示小数。 有限小数或者无限循 环小数都可以转化为分数。比如: 0.9 = 9/10 0.333(3)= 1/3 (括号中的数字表示是循环节) 当然一个小数可以用好几种分数形式来表示。如: 0.333(3)= 1/3 = 3/9 给定一个有限小数或者无限循环小数, 你能否以分母最小的分数形式来返回 这个小数呢?如果输入为循环小数, 循环节用括号标记出来。 下面是一些可能的 输入数据,如 0.3、0.30、0
2、.3(000)、0.3333(3333)、 写书评,赢取编程之美- 微软技术 面试心得 分析与解法 拿到这样一个问题, 我们往往会从最简单的情况入手, 因为所有的小数都可 以分解成一个整数和一个纯小数之和, 不妨只考虑大于 0,小 于 1 的纯小数, 且 暂时不考虑分子和分母的约分,先设法将其表示为分数形式,然后再进行约分。 题目中输入的小数,要么为有限小数 X=0.a 1 a 2 a n ,要么为无限循环小数 X=0.a 1 a 2 a n (b 1 b 2 b m ),X 表示式中的字母 a 1 a 2 a n ,b 1 b 2 b m 都是 09 的数 字,括号部分(b 1 b 2 b
3、m )表示循环节,我们需要处理的就是以上两种情况。 对于有限小数 X=0.a 1 a 2 a n 来说, 这个问题比较简单,X 就等于 (a 1 a 2 a n ) /10 n 。 对于无限循环小数 X=0.a 1 a 2 a n (b 1 b 2 b m )来说,其复杂部分在于小数点 后同时有非循环部分和循环部分,我们可以做如下的转换: X = 0.a 1 a 2 a n (b 1 b 2 b m ) 10 n * X= a 1 a 2 a n .(b 1 b 2 b m ) 10 n * X= a 1 a 2 a n +0. (b 1 b 2 b m ) X = (a 1 a 2 a n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精确 表达 浮点