wunderwaffe: тупят другие (karliki)
[personal profile] wunderwaffe
Разобрался со статьей про GMP. Автор перепутал в примере перевода длинного числа в строку всё, вообще всё, Наташ.

Пример -

Var
  f: mpf_t;
  n: longword;
  pc: PChar;
  s: AnsiString;
Begin
  mpf_set_default_prec(256);   
  mpf_init_set_str(f, '3.141592653589793238462643383279502884197169399375105820974944', 10);
  pc := mpf_get_str(NIL, n, 0, f);
  s := pc;
  s := Insert('.', s, n+1);   
  WriteLn(s);
End;

1) mpf_get_str имеет пять параметров, на не четыре - 
 mpf_get_str(str:pchar; out exp:mp_exp_t; base:longint; digits:sizeuint; var op:mpf_t):pchar;
2) вызов у автора выглядит так - 
 pc:=mpf_get_str(nil:pchar, n:longword, 0:sizeuint, f:mpf_t);
 Если под n разумеется экспонента, то она должна быть типа mp_exp_t, а не longword.
 Если под n разумеется система счисления, то n должен быть равен 10, например
3) Insert всегда был процедурой, а не функцией.

И пример должен быть таким - 

var pc:PChar;
 s:AnsiString;
 exp:mp_exp_t;
 f: mpf_t;
begin
 mpf_set_default_prec(256);   
 mpf_init_set_str(f, '3.141592653589793238462643383279502884197169399375105820974944', 10);
 exp:=0;
 pc:=mpf_get_str(nil,exp,10,0,f);
 s:=pc;
 insert('.',s,exp+1);
 writeln(s);
end;

https://yadi.sk/d/XQh0Sp-skMuCkw

Profile

wunderwaffe: рабочее (Default)
доктор Вандершпигель

April 2022

S M T W T F S
     12
34567 89
1011 12 1314 1516
17181920212223
24252627282930

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 16th, 2025 07:08 pm
Powered by Dreamwidth Studios