var i:double;
i:=67;
showmessage(floattostr(1/i));
を実行しますと
0.0149253731343284
が表示されます。
少数点以下50桁位まで求めたいのですが、何か方法は?
TurboPower SysTools のBCD 型を使えば小数点以下40桁で表現できます。
http://sourceforge.net/project/showfiles.php?group_id=71011
インストール時に
StBCD.pas でConst BcdSize = 10;を20 に変更します。
使用例はこんな感じです。
uses
StBCD;
var
i, a, b: TBcd;
begin
i := ValBcd('67');
a := ValBcd('1');
b := DivBcd(a, i);
showMessage(StrBcd(b, 0, 40));
end;
えーとね様ありがとうございました。
あんまり応用効かないですけれど。
筆算をそのまますれば何桁でもいけます。
procedure TForm1.FormCreate(Sender: TObject);
var
St :AnsiString;
i,c,shou,amari,hijo :Integer;
begin
St := '0.';
hijo := 100000;
for c := 0 to 10 - 1 do
begin
shou := hijo div 67;
amari := hijo mod 67;
St := St + Format( '%.5d',[shou]);
hijo := amari*100000;
end;
Memo1.Lines.Add(St);
end;
なるほど!と、ウナリました。
ウォレス様ありがとうございました。
関数化をtry中・・
ツイート | ![]() |