Runden in BCB 5
-
Ganz einfaches Runden:
((int)(my_double+0.5))
-
Also wenn es um die formatierte Ausgabe einer Fließkommavariablen in einen AnsiString geht, bietet sich AnsiString::FloatToStrF() an.
Es sei mir gestattet zu erwähnen, dass Fließkommawerte in C++ so ihre Tücken haben. Es gibt Werte die lassen sich nicht exakt darstellen.
Zum Runden (aus Christian Marquardts C-Ecke):
Rundet Prozessorunabhängig.
Hier ist die math.h einzubinden!Parameter:
double Zahl die zu runden ist
int Anzahl der zu rundenden Stellen
Rückgabewert:
double die gerundete Zahlinclude <math.h> .... double round(double zahl,int stellen) { double order=pow(10.0,stellen); return (int)(zahl*order+(zahl>0?0.5:-0.5))/order; };
-
Beispiel
400,93472342734
will ich nur die 400 anzeigen lassen, jedoch sollten kommastellen weiter hochgezählt werden(nicht sichbar).
-
äh 400 oder 401?
Mathematisch korrekt wäre 401 -> dann FloatToStrF() verwenden. Wenn tatsächlich 400 angezeigt werden soll -> AnsiString((int) zahl);
-
Ich lasse eine bestimmte zahl !!!jede sekunde!!! +0.9392472734 hochzählen.
will aber nur die zahl links vom komma anzeigen lassenbitte schreibt mir ein beispiel
-
Nun werd mal nicht pampig...

Wo willst du das denn überhaubt anzeigen???
-
ich werd ned pamping

folgendes programm:
void __fastcall TMain::TimerRohstoffeTimer(TObject *Sender) { // Förderung Eisenerz pro Sekunde. float erz; float forderungerz; forderungerz=StrToFloat(Main->ForderungEisenerz->Caption); erz=StrToFloat(Main->Eisenerz->Caption); forderungerz=forderungerz/3600; // Ausgabe erz=erz+forderungerz; Main->Eisenerz->Caption=FloatToStr(erz); //Hier will ich nach dem Komma abscheiden }
-
Wie schon gesagt (und gezeigt): caste deinen float nach int bzw. weise ihn einem int zu, dabei fallen die Kommastellen automatisch weg.
-
das geht bei größeren zahlen z.b.
float: 5000:3600=1,38
int: 5000:3600=1bei dem beispiel zählt er mir pro sekunde(timer) +1 hinzu.
wenn ich aber folgendes rechne:
float: 500:3600=0,13
int: 500:3600=0zählt er mir +0 hinzu, das will ich nicht. er soll mir +0,13 hinzuzählen aber nicht anzeigen.
-
Rechnen musst du natürlich weiterhin mit den floats, den Integer sollst du nur für die Ausgabe verwenden.
-
// || Förderung Eisenerz pro Sekunde. || int erz; float forderungerz; forderungerz=StrToFloat(Main->ForderungEisenerz->Caption); erz=StrToInt(Main->Eisenerz->Caption); forderungerz=forderungerz/3600; erz=erz+forderungerz; // Ausgabe Main->Eisenerz->Caption=IntToStr(erz);Wenn sie das so meinen
...geht nicht 
-
Grundgütiger...
Liest Du die Postings überhaupt???
Irgendwo viele Postings früher habe ich das schon mal geschrieben:
AnsiString((int) zahl); // auf Dein Beispiel angewendet dann: Main->Eisenerz->Caption=AnsiString((int) erz);Joe_M.
-
danke nochmals, es geht

sorry...aber ich nutze das programm noch nicht sehr lange und konnte damit nichts anfangen