Solved

Faster than FloatToStr command...?

Posted on 2014-11-10
12
87 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
Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

 

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

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

Suggested Solutions

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

815 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now