精确表达浮点数

来源:互联网 发布:淘宝联盟2016 编辑:程序博客网 时间:2024/05/17 04:20

用分数形式表示小数。有限小数或者无限小数都可以转化为分数。方法:对于有限小数X=0.a1a2a3···an,X=(a1a2a3···an)/10^n。对于无限循环小数X=0.a1a2a3···an(b1b2···bm),X=( a1a2a3···an+0.(b1b2···bm))/10^n。再对付小数部分,Y=0.b1b2···bm(b1b2···bm),则(10^m)*Y= b1b2···bm.(b1b2···bm)=>(10^m)*Y= b1b2···bm+Y=>

Y= b1b2···bm/(10^m-1)。所以X=( a1a2a3···an+ b1b2···bm/(10^m-1))/10^n=

(a1a2a3···an*(10^m-1+b1b2···bm)/((10^m-1)*10^n)。再将分子分母同除去他们两者的最大公约数即可。