其他分享
首页 > 其他分享> > 2.6 精确表达浮点数

2.6 精确表达浮点数

作者:互联网

2.6 精确表达浮点数

基本问题:在计算机中,一般使用float和double来表示浮点数,但是由于计算机本身硬件的限制,不能够很准确的表示小数,为了得到精确的结果,用分数来表示小数,如果一个小数是无限小数,我们假设它是无限循环小数。

解法

经题目可得,我们输入的数字主要有两种

\[X = 0.a_1a_2...a_n \]

\[X = \frac{a_1a_2...a_n}{10^n} \]

然后再对分子分母进行最大公约数化简即可gcd

\[X = 0.a_1a_2...a_n(b_1b_2...b_m) \]

其中\((b_1b_2...b_m)\)是循环体

\[X = 0.a_1a_2...a_n(b_1b_2...b_m) \]

\[10^n * X = a_1a_2...a_n.b_1b_2...b_m \]

\[10^n * X = a_1a_2...a_n + 0.b_1b_2...b_m \]

\[X = frac{a_1a_2...a_n + 0.b_1b_2...b_m}{10^n} \]

再看循环体

\[Y = 0.b_1b_2...b_m \]

\[10^m * Y = b_1b_2...b_m.b_1b_2...b_m \]

\[10^m *Y - Y = b_1b_2...b_m \]

\[Y = \frac{b_1b_2...b_m}{10^m-1} \]

将上式带入X的表达式中得

\[X = \frac{a_1a_2...a_n}{10^n} + \frac{b_1b_2...b_m}{10^n*(10^m - 1)} \]

标签:...,frac,10,浮点数,1a,1b,精确,2.6
来源: https://www.cnblogs.com/botak/p/14023484.html