重新开始战斗11-编程之美-精确表达浮点数
2014-03-26 09:28
246 查看
问题描述:
给定一个有限小数或无限循环小数,能否以分母最小的分数形式来返回这个小数。
问题分析:
在进行分析之前,先谈谈对这个题的思考方式。如何表示一个有限小数或无限循环小数,首先,无限循环小数的表达一定比有限小数更加复杂,所以应该从有限小数入手。其次,用分母最小的分数形式表示,如果没有这个限制条件,那么问题的求解也应该会变得简单。因此在解决这个问题的时候,应该从简到难。
对于有限小数:X=0.a1a2a3..an,在不考虑分母最小的情况下,其分数的表示很简单!即,如果要用分母最小的形式表示,则求10n和a1a2a3..an最大公约数问题。
对于无限循环小数:X=0.a1a2a3..an(b1b2b3..bm),其中括号内为循环部分,关于无限循环小数存在非循环节与循环节的问题,如果乘以10n,则可以将问题转为只含循环节的无限循环小数的问题上,这样又可以进一步简化问题。
那么对于X=0.a1a2a3..an( b1b2b3..bm),10nX=a1a2a3..an +0.( b1b2b3..bm);对于Y=0.(
b1b2b3..am),
10mY = 0.( b1b2b3..bm)+b1b2b3..bm,进而,10mY-Y=b1b2b3..bm,所以Y= b1b2b3..bm/(10m-1)。带入得:
X=( a1a2a3..an+Y)/10n
=( a1a2a3..an+ b1b2b3..bm/(10m-1))/10n
=( a1a2a3..an*(10m-1)+(b1b2b3..bm))/((10m-1)*10n)
得到问题的解,然后退化为最大公约数问题。
给定一个有限小数或无限循环小数,能否以分母最小的分数形式来返回这个小数。
问题分析:
在进行分析之前,先谈谈对这个题的思考方式。如何表示一个有限小数或无限循环小数,首先,无限循环小数的表达一定比有限小数更加复杂,所以应该从有限小数入手。其次,用分母最小的分数形式表示,如果没有这个限制条件,那么问题的求解也应该会变得简单。因此在解决这个问题的时候,应该从简到难。
对于有限小数:X=0.a1a2a3..an,在不考虑分母最小的情况下,其分数的表示很简单!即,如果要用分母最小的形式表示,则求10n和a1a2a3..an最大公约数问题。
对于无限循环小数:X=0.a1a2a3..an(b1b2b3..bm),其中括号内为循环部分,关于无限循环小数存在非循环节与循环节的问题,如果乘以10n,则可以将问题转为只含循环节的无限循环小数的问题上,这样又可以进一步简化问题。
那么对于X=0.a1a2a3..an( b1b2b3..bm),10nX=a1a2a3..an +0.( b1b2b3..bm);对于Y=0.(
b1b2b3..am),
10mY = 0.( b1b2b3..bm)+b1b2b3..bm,进而,10mY-Y=b1b2b3..bm,所以Y= b1b2b3..bm/(10m-1)。带入得:
X=( a1a2a3..an+Y)/10n
=( a1a2a3..an+ b1b2b3..bm/(10m-1))/10n
=( a1a2a3..an*(10m-1)+(b1b2b3..bm))/((10m-1)*10n)
得到问题的解,然后退化为最大公约数问题。
相关文章推荐
- 【编程之美】2.6 精确表达浮点数
- 编程之美-2.6、精确表达浮点数
- 读书笔记之编程之美 – 2.6 精确表达浮点数
- 编程之美-2.6-精确表达浮点数
- 编程之美--2.6 精确表达浮点数
- [编程之美] PSet2.6 精确表达浮点数
- [编程之美] 2.6 精确表达浮点数
- 【编程之美】2.6精确表达浮点数
- 编程之美--精确表达浮点数
- 编程之美 set 2 精确表达浮点数
- 精确表达浮点数 -- 编程之美
- 重新开始战斗07-编程之美-高效见面会
- <2011 11 10> 编程中数据处理的问题(三)浮点数运算与精度误差
- 答案_精确表达浮点数
- 浮点数(有限浮点数、无限循环浮点数)的精确表达
- 编程之美 精确表达浮点数
- 精确表达浮点数
- 编程之美 - 浮点数的精确表示
- 第2章 数字之魅——精确表达浮点数
- 精确表达浮点数