如何用maple计算110.110110110...的二进制值

问题描述:

如何用maple计算110.110110110...的二进制值
110.110110110...是无限循环的小数

无限循环小数 110.110110110...= 110+110/999
convert(110.+110/999,binary,decimal)
1.101110000*10^6二进制可以写成分数吗?还有999,二进制不是只有1、0吗?将无限循环小数转换为分数只是为了表示得更加精确一些。convert 命令转换为二进制数时,有效数字的个数是可以控制的。例如

convert(110.+110/999, binary, 100);

1.101110000111000011000000101100111011100111010110010100000000001101001101100100100101101000001010001 10^6

------------------------
你的意思是:如何用 maple 计算二进制数 110.110110110... 的十进制值?
如果是这样,则计算过程如下:

convert(110.110110110, decimal, binary);

6.855468750

输入的位数越多,转换就越精确。(你的意思是:如何用 maple 计算二进制数 110.110110110... 的十进制值?)
我就是这个意思,就是小数点后有无穷位,就是 110.110110110...这后面的...怎么表示?很遗憾,Maple 无法接受无穷多个有效数位的输入,我们也无法进行无穷多位的输入。尚未发现 Maple 有表示循环节的输入方法,也许新版本会解决这个问题。你的想法对程序员是个新挑战。


附:你的问题无需求助 Maple 即可解决。
二进制无限循环小数 110.110110110110110110110110110110110...

转换成十进制数 = 2^2+2^1+2^(-1)+2^(-2)+2^(-4)+2^(-5)+2^(-7)+2^(-8)++2^(-10)+2^(-11)+...
这种加权求和法是一辈子也算不完的。
换用另一种方法:设原值是 S

S=110.110110...
2^3*S=110110.110110... 两边同乘以 8,相当于二进制小数点右移三位
两式相减得 7S=(110 000)2=(48)10
S=48/7=6+6/7