Solved

Float or double to string....

Posted on 2002-05-05
11
236 Views
Last Modified: 2010-04-02
Hello Experts...

There is a library for converting integers to chars.
itoa....
But I didn't find any to do the same with noninteger numbers...
For instances... How can I convert the number 12.365 to a char array with "12.365"?.

If there is no function that Does that... I guess I will must write one....
How can I handle a double var?
I mean.... Is it right to say that the first four bytes contains the int part of the number and the last four bytes the decimal part?...

I need some help about this....

Thank you...
0
Comment
Question by:Marsc
  • 4
  • 3
  • 2
  • +2
11 Comments
 
LVL 86

Expert Comment

by:jkr
ID: 6990611
use either

/* _GCVT.C: This program converts -3.1415e5
 * to its string representation.
 */

#include <stdlib.h>
#include <stdio.h>

void main( void )
{
   char buffer[50];
   double source = -3.1415e5;
   _gcvt( source, 7, buffer );
   printf( "source: %f  buffer: '%s'\n", source, buffer );
   _gcvt( source, 7, buffer );
   printf( "source: %e  buffer: '%s'\n", source, buffer );
}


or

#include <sstream>

stringstream ss;
double d = 3.141;

ss << d;

const char* psz = ss.str().c_str();
0
 
LVL 86

Expert Comment

by:jkr
ID: 6990613
Ooops, correction - the latter sample should read

#include <sstream>
using namespace std;

stringstream ss;
double d = 3.141;

ss << d;

const char* psz = ss.str().c_str();
0
 
LVL 1

Accepted Solution

by:
Shivshankar earned 100 total points
ID: 6990993
I'd suggest you rather use sprintf.

sprintf(str, "%5.2f", some_float_number);

The simplest solution that I always use. More importantly I get it in whatever format I want. :-)
0
 
LVL 1

Author Comment

by:Marsc
ID: 6991172
I cannot use printf... The program runs under Windows....
So.... I need the string to use the API DrawText ()....
I will see what is _gcvt about....

0
 
LVL 1

Expert Comment

by:jdrescher
ID: 6991245
> I cannot use printf... The program runs under Windows....
>So.... I need the string to use the API DrawText ()....

sprintf works fine under windows. Just sprintf to a buffer and use DrawText on that buffer.

char str[100];

sprintf(str, "%5.2f", some_float_number);

DrawText(hDC,str,strlen(str),rect,uFormat);

// see the doc for DrawText for a description of the params.



Are you using MFC. If so use the following;

//cdc is a CDC for the window you need to draw on.

CString str;

str.Format("%5.2f", some_float_number);

cdc.DrawText(str,rect,nFormat);



John
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 1

Expert Comment

by:Yechezkel
ID: 6993412
0
 
LVL 1

Author Comment

by:Marsc
ID: 7014651
All anwsers were good, but Shivshankar's was the first...

Thank you.
0
 
LVL 86

Expert Comment

by:jkr
ID: 7014681
>>but Shivshankar's was the first...

Accepted Answer
From: Shivshankar  Date: 05/06/2002 02:47AM PST  

Comment
From: jkr  Date: 05/05/2002 02:51PM PST  

That is a whole *day* later...
0
 
LVL 1

Author Comment

by:Marsc
ID: 7016376
jkr:

I am sorry about this.... You are right...
I always try to be fair but I mistaken about this...
Let me know if you want me to post some question with points for you.
0
 
LVL 1

Expert Comment

by:Shivshankar
ID: 7019660
Yes jkr,

I'm a day later than you.
But, I guess, its a simple and straightforward solution.

Best Regards.
0
 
LVL 1

Author Comment

by:Marsc
ID: 7022613
Shivshankar

If we talk about to be fair...
Actually you are right

:-)
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Errors will happen. It is a fact of life for the programmer. How and when errors are detected have a great impact on quality and cost of a product. It is better to detect errors at compile time, when possible and practical. Errors that make their wa…
Written by John Humphreys C++ Threading and the POSIX Library This article will cover the basic information that you need to know in order to make use of the POSIX threading library available for C and C++ on UNIX and most Linux systems.   [s…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

932 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

12 Experts available now in Live!

Get 1:1 Help Now