Hi,

Thanka a million ! It really solved my problem.

thanks again !

regards

Shoeb Mohammed

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of Jaba
Adams
Sent: Thursday, July 12, 2001 9:00 PM
To: Palm Developer Forum
Subject: Re: Where to find FloatToString? (FplFtoA no good)


Will this code work on PalmOS 1.0? When I wrote my float conversion code, I
couldn't use the "float" keyword.

If you need Palm OS 1.0 compatibility, see my post on 2001.07.10 for my,
much longer :(, version.

Jaba Adams
Shinyfish Sofware
http://www.shinyfish.com


At 09:26 AM 7/12/01 -0500, you wrote:
>I had problems with FlpFToA in the past, as well and I use this function
for
>that now (originally from this forum, but I did find a bug in it if you
>tried to round it to 0 decimal places.. noted in the code):
>
>// Note that this function does not do bounds checking on the passed
buffer,
>// so be sure it is big enough to handle the data!
>void FloatToString (double value, char * buffer, int round)
>{
>  // this function came from a combination of Thiago Rossato and
>  //  Noah Young via the Palm Developer Forum
>  long iValue;
>  float dDecimal;
>  long iDecValue;
>  int i;
>  char sResult[50];
>  char sDecimal[50];
>
>  iValue = value;
>
>  dDecimal = value - iValue;
>
>  // if dDecimal >= 1, then iValue should actually be greater by dDecimal
>  //   this happens in situations of numbers that can't be accurately
>  //   represented as a double.. (7 is 6.9999999997, but dDecimal is 1
after
>  //   the above) (this was the bug I mentioned)
>  if (dDecimal >= 1)
>  {
>   i = dDecimal;
>   iValue = iValue + i;
>   dDecimal = dDecimal - i;
>  }
>  // Make sure rounding will still work if value is negative
>  if (value < 0)
>   dDecimal = -dDecimal;
>
>  if (dDecimal < 0.000000001) dDecimal = 0;
>
>  if (!round && dDecimal >= 0.5) iValue++;
>
>  // Convert integer portion to string
>  StrIToA(sResult, iValue);
>  if (StrLen(sResult) < 1) StrCopy(sResult, "0");
>  if (round)
>  {
>   StrCat(sResult, ".");
>
>   // Round decimal portion
>   for (i = 1; i <= round; i++)
>    dDecimal = dDecimal * 10;
>
>   iDecValue = dDecimal;
>   if (dDecimal - iDecValue >= 0.5) iDecValue++;
>
>   // Add decimal portion
>   StrIToA (sDecimal, iDecValue);
>
>   // Add leading zeros if neccessary
>   if (StrLen (sDecimal) < round)
>    for (i = 1; i <= round - StrLen(sDecimal); i++)
>     StrCat (sResult, "0");
>   StrCat (sResult, sDecimal);
>  }
>
>  // Copy into return string
>  StrCopy (buffer, sResult);
>}
>
>And.. since you asked.. This is how I use the existing funtion to go back
>the other way:
>
>double StrAToF(char *str)
>{
>  FlpCompDouble theCompFloat;
>  double theFloat;
>
>  // Convert a string to a float
>  theCompFloat.fd = FlpAToF(str);
>  theFloat = theCompFloat.d;
>  return theFloat;
>}
>
>----------
>Bradly J. Barton - [EMAIL PROTECTED]
>Jenies Technologies Incorporated
>(972) 602-1835
>http://www.JTI.net
>http://HandAble.com
>
>
>
>--
>For information on using the Palm Developer Forums, or to unsubscribe,
>please see http://www.palmos.com/dev/tech/support/forums/



--
For information on using the Palm Developer Forums, or to unsubscribe,
please see http://www.palmos.com/dev/tech/support/forums/


-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/tech/support/forums/

Reply via email to