klark
Νεοφερμένο μέλος


Όποιος μπορεί να με βοηθήσει, παρακαλώ ας το κάνει
ευχαριστώ εκ των προτέρων

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
fandago
Διακεκριμένο μέλος


Για παράδειγμα το:%[flags][width][.precision][length]specifier
Where specifier is the most significant one and defines the type and the interpretation of the value of the coresponding
For integer specifiers (d, i, o, u, x, X): precision specifies the minimum number of digits to be written. If the value to be written is shorter than this number, the result is padded with leading zeros. The value is not truncated even if the result is longer. A precision of 0 means that no character is written for the value 0.
For e, E and f specifiers: this is the number of digits to be printed after the decimal point.
For g and G specifiers: This is the maximum number of significant digits to be printed.
For s: this is the maximum number of characters to be printed. By default all characters are printed until the ending null character is encountered.
For c type: it has no effect.
When no precision is specified, the default is 1. If the period is specified without an explicit value for precision, 0 is assumed.
printf ("floats: %.2f", 3.1416);
θα βγάλει 3.14
Αυτό ζητάς;

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.


Μέσα στην sprintf θα περασεις τον αριθμό στο buffer με την ακριβεια ψηφιων που το θες.
double x = 345.2214455;
char szBuffer[255];
sprintf(szBuffer,"%.4f",x);
*To link που έδωσα είναι για visual C++ .Νομιζα οτι στον τίτλο ελεγε για VC++

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
fandago
Διακεκριμένο μέλος


std::cout<< fixed << std::setprecision(2) << o_float_sou << "\n";
Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
fandago
Διακεκριμένο μέλος


Έχεις δίκιο Bill, κατά την αλλαγή του τίτλου το ξέχασα.*To link που έδωσα είναι για visual C++ .Νομιζα οτι στον τίτλο ελεγε για VC++, αλλά και η sprintf δουλεύει κανονικά.

Και μιας και εγώ μάλλον ήμουν off topic, δίνοντας οδηγίες για καθαρά C και C++ αντίστοιχα (


Visual C++ Standard Library: setprecision
Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
klark
Νεοφερμένο μέλος



ευχαριστώ και πάλι...

Επίσης, ο τρόπος με τον οποίο δίνουμε τιμή σε ένα edit box είναι ο εξής
float count=0;
~..
count += 0.001112;
Edit1->Text=count; //όπου εδώ στην ουσία το κουτάκι παίρνει την τιμή που του δίνουμε, η οποία βέβαια είναι κάπως έτσι 0.006156454556.
Τα παραπάνω τα παρέθεσα σε περίπτωση που βοηθούν στην απάντηση, ευχαριστώ.
Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.


ευχαριστώ πολύ για τις απαντήσεις σας, αλλα όπως προείπατε δεν είναι για visual c++. Οπότε το ερώτημα παραμένει, παρακαλώ όποιος έχει να δώσει κάποια απάντηση...να το κάνει....
ευχαριστώ και πάλι...
Επίσης, ο τρόπος με τον οποίο δίνουμε τιμή σε ένα edit box είναι ο εξής
float count=0;
~..
count += 0.001112;
Edit1->Text=count; //όπου εδώ στην ουσία το κουτάκι παίρνει την τιμή που του δίνουμε, η οποία βέβαια είναι κάπως έτσι 0.006156454556.
Τα παραπάνω τα παρέθεσα σε περίπτωση που βοηθούν στην απάντηση, ευχαριστώ.
Mάλλον δεν διάβασες καλά το ποστ μου.

Κάτι που θα μπορουσες να κανεις είναι να χρησιμοποιήσεις την sprintf.
Μέσα στην sprintf θα περασεις τον αριθμό στο buffer με την ακριβεια ψηφιων που το θες.
Ρίξε μια ματιά εδώ.Μήπως βρεις και τίποτα άλλο που χρειάζεσαι.Code:double x = 345.2214455; char szBuffer[255]; sprintf(szBuffer,"%.4f",x);
*To link που έδωσα είναι για visual C++ .Νομιζα οτι στον τίτλο ελεγε για VC++, αλλά και η sprintf δουλεύει κανονικά.
Όπως και να χει μπορείς να κάνεις αυτό που σου έγραψα παραπάνω και στη συνέχεια αν θες να περνάς το νούμερο ως αριθμό κι όχι ως αλφαριθμητικό .Υπάρχoυν συναρτήσείς που μετατρέπουν το αλφαριθμιτικό σε ακέραιο ή κινητής υποδιαστολής.Αυτές είναι οι atoi() και atof().Η δεύτερη είναι αυτή που χρειάζεσαι για την κινητή υποδιαστολή.
Συντάσσεται ως εξής:
double number;
number = atof( szBuffer );
Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
klark
Νεοφερμένο μέλος


extern PACKAGE AnsiString __fastcall FloatToStr(Extended Value);
αλλά δεν κατάλαβα πως χρησιμοποιείται. Όποιος ξέρει ας μου δώσει τα φώτα του...ευχαριστώ
Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.


-με την spirntf
[FONT=Lucida Console][SIZE=2][COLOR=blue]char[/COLOR] str[50] = "";
[COLOR=blue]float[/COLOR] f = 2.7;
sprintf(str, "%f", f);[/SIZE][/FONT]
ή
-με χρήση streams.
[FONT=Lucida Console][SIZE=2] #include <sstream>
ostringstream stringBuffer;
[COLOR=blue]float[/COLOR] f = 2.7;
buffer << f;
[COLOR=blue]string[/COLOR] str = stringBuffer.str();[/SIZE][/FONT]
#include <iostream>
#include <sstream>
using namespace std;
int main ()
{
float val =123.444;
stringstream ss (stringstream::in | stringstream::out);
ss << val;
ss >> val;
string mychar =ss.str();
cout << val << endl;
cout<<mychar.c_str();
return 0;
}
Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
klark
Νεοφερμένο μέλος


Κάτι που θα μπορουσες να κανεις είναι να χρησιμοποιήσεις την sprintf.
Μέσα στην sprintf θα περασεις τον αριθμό στο buffer με την ακριβεια ψηφιων που το θες.
Ρίξε μια ματιά εδώ.Μήπως βρεις και τίποτα άλλο που χρειάζεσαι.Code:double x = 345.2214455; char szBuffer[255]; sprintf(szBuffer,"%.4f",x);
*To link που έδωσα είναι για visual C++ .Νομιζα οτι στον τίτλο ελεγε για VC++, αλλά και η sprintf δουλεύει κανονικά.
τελικά έκανα τα παραπάνω και δούλεψε!! ήθελε λίγο πατέντα αλλά το αποτέλεσμα μετράει, ευχαριστώ όλους για τη βοήθεια
Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Χρήστες Βρείτε παρόμοια
-
Φορτώνει...
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.