少数点以下50桁を表示

解決


uomo  2006-12-21 04:18:43  No: 24323

var i:double;
i:=67;
showmessage(floattostr(1/i));

を実行しますと
0.0149253731343284
が表示されます。
少数点以下50桁位まで求めたいのですが、何か方法は?


えーとね  2006-12-21 16:27:05  No: 24324

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;


uomo  2006-12-21 18:55:41  No: 24325

えーとね様ありがとうございました。


ウォレス  2006-12-21 20:39:37  No: 24326

あんまり応用効かないですけれど。
筆算をそのまますれば何桁でもいけます。

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;


uomo  2006-12-21 23:18:17  No: 24327

なるほど!と、ウナリました。
ウォレス様ありがとうございました。
関数化をtry中・・


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加