Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Count digits after point (https://www.delphipraxis.net/179120-count-digits-after-point.html)

swkevin08 15. Feb 2014 16:59

AW: Count digits after point
 
as the others have said, it has something to do with the approach.
but look at this. maybe it will help you!

ps: doenst work for all numbers! for example x,42300000000000000001

Edit: e was randomly generated

Code:
const
  e = 0.0000000001;

function CountDigitsAfterPoint(AValue: Extended): Byte;
var r: Extended;
begin
  Result := 0;
  r := Int(AValue);
  while ((Frac(AValue) <> 0) and ((AValue - r) > e)) do
  begin
    Inc(Result);
    AValue := AValue * 10;
    r := Int(AValue+e);
  end;
end;

WojTec 15. Feb 2014 17:49

Re: Count digits after point
 
Thanks, for all values I used early, is working correctly.
BTW: why e has that value, can have other values?

swkevin08 15. Feb 2014 18:32

AW: Count digits after point
 
e is just a small number close to zero. it doesn't matter if there's one zero more or one less.

Sir Rufo 15. Feb 2014 20:53

AW: Re: Count digits after point
 
Zitat:

Zitat von WojTec (Beitrag 1248005)
Thanks, for all values I used early, is working correctly.
BTW: why e has that value, can have other values?

Have a look at the documentation Delphi-Referenz durchsuchenSystem.Math.SameValue and Delphi-Referenz durchsuchenSystem.Math.CompareValue and read what is the meaning of Epsilon.

Another helpful article is http://en.wikipedia.org/wiki/Machine_epsilon

Furtbichler 15. Feb 2014 21:07

AW: Re: Count digits after point
 
Zitat:

Zitat von WojTec (Beitrag 1247995)
So, reason is not important. Important is problem.
But if you want to know: (1) result is required for further computation purposes and (2) for formating. :)

The reason is always important, especially when people don't seem to exactly know what they are talking about.

Showing the number of decimals is definitely not something to please the eye. It is showing the accuracy of your value, so a value of, say, 100 (metres) measured up to a mm is correctly shown as "100,000 m" whereas the same value with an accuracy of 1m is shown as "100m".


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz