问题标题:
十进制实数转二进制的程序Programzy6;varbin:array[0..50]of0..1;x:longint;k,i:integer;beginwriteln('readdecimaldatax:');read(x);fori:=0to50dobin[i]:=0;k:=0;whilex>0dobeginbin[k]:=xmod2;x:=xdiv2;k:=k+1;end;writeln('Binary:
问题描述:
十进制实数转二进制的程序
Programzy6;
varbin:array[0..50]of0..1;
x:longint;
k,i:integer;
begin
writeln('readdecimaldatax:');read(x);
fori:=0to50dobin[i]:=0;
k:=0;
whilex>0do
begin
bin[k]:=xmod2;x:=xdiv2;
k:=k+1;
end;
writeln('Binary:');
fori:=k-1downto0dowrite(bin[i]:1);
end.
陈应祖回答:
你这是整数的转换程序啊.
陈应祖回答:
由于十进制小数转化为二进制小数通常都是无限循环小数,所以下面最多输出50位二进制小数(可以修改为你想要的位数。
{$N+} {在FreePascal下不需要此行}
varbin:array[0..31]of0..1;
y:double;x:longint;
k,i:integer;
begin
writeln('readdecimaldatax:');read(y);
fori:=0to50dobin[i]:=0;
k:=0;x:=trunc(y);y:=y-x;
whilex>0do
begin
bin[k]:=xmod2;x:=xdiv2;
k:=k+1;
end;
writeln('Binary:');
fori:=k-1downto0dowrite(bin[i]:1);
i:=0;write('.');
while(y>1e-10)and(i<50)do {这里规定最多50位小数}
begin
y:=y*2;inc(i);
ify>=1thenbeginwrite(1);y:=y-1endelsewrite(0);
end;
writeln;
end.
点击显示
其它推荐