Solved

Faster than FloatToStr command...?

Posted on 2014-11-10
12
89 Views
Last Modified: 2015-05-30
Hello all, does anyone know of a faster/more efficient alternative to the Delphi FloatToStr function?

Thanks
   Shawn

P.S: I'm using Delphi 7.
0
Comment
Question by:shawn857
12 Comments
 
LVL 26

Assisted Solution

by:Sinisa Vuk
Sinisa Vuk earned 500 total points
ID: 40434440
I use win format function:
Format('%5.2f', [123.456789]);

Open in new window


hint: if you interested to see other faster algorithms:
http://fastcode.sourceforge.net/
0
 

Author Comment

by:shawn857
ID: 40434443
thanks Sinisa. Regarding the Format function - I won't know what size the real number will be beforehand. It could be 12.8 or 12228763521.65255362. So would I be able to use a Format statement like Format('%30.20f') ?

I looked briefly at the fastcode page. Do you know if there's a "FloatToStr" function there?

Thanks!
    Shawn
0
 
LVL 26

Expert Comment

by:Sinisa Vuk
ID: 40434457
No, there is not FloatToStr (yet) on fastcode page.
I don't suggest to show more than 8 decimal places - and this should be fine too:

Label1.Caption := Format('%.8f', [12228763521.65255362]);

Open in new window


... or

Label1.Caption := Format('%f', [12228763521.65255362]);

Open in new window


... with default formatting.
0
Active Directory Webinar

We all know we need to protect and secure our privileges, but where to start? Join Experts Exchange and ManageEngine on Tuesday, April 11, 2017 10:00 AM PDT to learn how to track and secure privileged users in Active Directory.

 

Author Comment

by:shawn857
ID: 40434463
Thanks Sinisa, I'll try that.

Looking at the Fastcode page, I noticed there were a few other routines that would be useful for me. I'm a little confused about the usage though. It seems for each fucntion, there are many different ways to call it:

function  XXXFastcodeP4N;
function  XXXFastcodeP4P;
function  XXXFastcodePMD;
function  XXXFastcodePMB;
function  XXXFastcodeAthlonXP;
function  XXXFastcodeAMD64;

I don't really want a "hardware-specific" version...Is any one of these okay, or do you know if there is just a regular "generic" way to call the function?

Thanks!
    Shawn
0
 
LVL 26

Expert Comment

by:Sinisa Vuk
ID: 40434482
Using assembler variant of function for Intel processors is a good way too.
0
 

Author Comment

by:shawn857
ID: 40436330
Thanks Sinisa. How do I know which one is the assembler variant function for intel processors?

Thanks
   Shawn
0
 

Accepted Solution

by:
shawn857 earned 0 total points
ID: 40436368
Sinisa, I just tried a small profiling run comparing FloatToStr and your suggestion of "Format" command... FloatToStr is actually slightly faster:

FloatToStr -   0.00000074 secs Avg Time
Format('%f' - 0.00000084 secs Avg Time

... maybe there is just no improving on FloatToStr?

Cheers
    Shawn
0
 
LVL 37

Expert Comment

by:Geert Gruwez
ID: 40438853
look at the complete picture ... for improvements
does the input have to be a float ?

this may be an odd question ... but what if you got an integer for the integer part
and an integer for the fractional part

inttostr is probably somewhat faster than floattostr
0
 

Author Comment

by:shawn857
ID: 40460947
Hi Geert, well, that won't help for the odd times when the float number happens to be in Scientific Notation.

Thanks
   Shawn
0
 

Expert Comment

by:shawn226
ID: 40795163
Yes, we can just abandon it... sorry for that. A pretty nit-picky question from me to begin with actually...

Regards
   Shawn
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.

821 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question