Re: Fast conversion of a float to character string ( C language )

From: gerard46 (gerard46_at_rtt.net)
Date: 09/11/04


Date: Sat, 11 Sep 2004 21:42:14 GMT


| James Kanze wrote:
|> Paul Lutus wrote:
||> flair wrote:
||> / ...
||>> Thank you for your response.
||>> Actually, I have to display float numbers that always have one of
||>> the following formats:
||>> "8888.88"
||>> "888.88"
||>> "88.88"
||>> "8.88"
||>> "-8888.88"
||>> "-888.88"
||>> "-88.88"
||>> "-8.88"
||>> It looks simple.

||> Those are not formats per se, they represent properties of the data.
||> I mean, 8.88 looks different than 888.88, not because of a
||> formatting choice, but because it is a different number.

| Always two digits after the decimal. And the values aren't that large,
| either. The easiest way to handle that would be to multiply by 100,
| convert to int, convert the int to a string, and then insert the
| decimal.

It's still not that simple. Consider the trival cases of 0, 1, -9,
12, and also rounding. Also, should -13 be -.13 or rather -0.13 ?
Even though the numbers will ALWAYS be in the above formats, but what
if they ain't ? ______________________________________________Gerard S.

||>> I have written my own function for the conversion. It improved the
||>> speed of my program but I am sure I can find a better algorithm.
||> I am willing to bet your algorithm cannot handle an entire class of
||> rounding problems that come up with conversion from binary to
||> decimal. If your algorithm is faster than sprintf(), it does it by
||> taking shortcuts that don't matter in 99% of cases.

||> Example. Show your algorithm's output with different numbers of
||> decimal places (or absolute magnitude) for a double variable loaded
||> with the results for 4.0/9.0 and 5.0/9.0 respectively.

||> On the other hand, if your program must format currency values and
||> that is its only purpose, you may be better off using a method that
||> converts the doubles to a properly rounded long that is aligned with
||> pennies (e.g. it resesents an integer number of pennies). In this
||> arrangement, after the conversion, formatting and printing the
||> numbers in decimal form is deterministic and reliable.

| If his program must deal with currency values, there is a good chance
| that he has to get some sort of package which does decimal arithmetic.



Relevant Pages

  • Re: Fast conversion of a float to character string ( C language )
    ... |> Those are not formats per se, they represent properties of the data. ... |>> I have written my own function for the conversion. ... |>> speed of my program but I am sure I can find a better algorithm. ... |> pennies. ...
    (comp.programming)
  • Re: Fast conversion of a float to character string ( C language )
    ... Those are not formats per se, they represent properties of the data. ... I am willing to bet your algorithm cannot handle an entire class of rounding ... problems that come up with conversion from binary to decimal. ... resesents an integer number of pennies). ...
    (comp.programming)
  • Re: How to preview nv12(yuv420) format video
    ... Any suggestion for an algorithm? ... filter. ... It's nothing more than rearranging bytes. ... formats, yes? ...
    (microsoft.public.win32.programmer.directx.video)
  • Re: Check for mobile device?
    ... place to see what formats the user-agent likes. ... It's even pounded with a quality ratio. ... Apache's algorithm is a good example of clever content negotiation: ...
    (comp.infosystems.www.authoring.html)