Re: Fast conversion of a float to character string ( C language )
From: gerard46 (gerard46_at_rtt.net)
Date: 09/11/04
- Next message: !Q: "Re: Steps beyond "Hello World" program"
- Previous message: James Kanze: "Re: Fast conversion of a float to character string ( C language )"
- In reply to: James Kanze: "Re: Fast conversion of a float to character string ( C language )"
- Next in thread: Paul Lutus: "Re: Fast conversion of a float to character string ( C language )"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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.
- Next message: !Q: "Re: Steps beyond "Hello World" program"
- Previous message: James Kanze: "Re: Fast conversion of a float to character string ( C language )"
- In reply to: James Kanze: "Re: Fast conversion of a float to character string ( C language )"
- Next in thread: Paul Lutus: "Re: Fast conversion of a float to character string ( C language )"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|