[ SOLVED ] length in chars needed to represent float in 32bit program lazarus / 62-General ---------------------------------------------------------------------- superc · 2021-09-06 06:57 Hello, what is the maximum length in chars needed to represent float into string in 32 bit program? Thanks in advance. ---------------------------------------------------------------------- Bart · 2021-09-06 07:55 That depends on the type of float: single, double, extended and the platform (on some platforms extendes is just an alias for double). Bart ---------------------------------------------------------------------- winni · 2021-09-06 08:13 Hi! Have a look at https://www.freepascal.org/docs-html/ref/refsu5.html Winni ---------------------------------------------------------------------- BobDog · 2021-09-06 11:05 I can produce a perfect cast from double to ansistring. (windows) Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i    uses   sysutils; function sprintf(s:pchar;mask:pchar):integer; cdecl; varargs; external 'msvcrt.dll' name 'sprintf';  function dbl2str(d:double):ansistring;var ans:ansistring;var i:int32;beginsetlength(ans,32);FillChar(ans[1],32,#0);  sprintf(@ans[1],'%.30f',d);  if (pos('.',ans) <>0) then  begin  for i:=length(ans) downto 1 do   begin   if (ans[i]<>'0')  then break;    if (ans[i]='0') then ans[i]:=#32;   end;  end ;  exit(trim(ans));end;   var i,tmp:int32;var d,v:double;var s:ansistring; begin for i:=1 to 5000 do begin   d:=(random*100)-(random*100);   s:= dbl2str(d);   val(s,v,tmp);   if (v<>d) then writeln('error');   writeln('''',s,'''','  ',d);  end;  writeln ('Press return to end'); readln; end. ---------------------------------------------------------------------- winni · 2021-09-06 12:24 Hi! Look how FloatToStr works: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i showmessage (FloatToStr(3.98765432109876543210)); Because there are  too many digits the string shows only 3.98765432109877 Next example:Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i  showmessage (FloatToStr(12345678901234567890.0));   Because of too many digits the result is shown in the scientzific notification 123456789012346E19 Winni