Typumwandlung
-
"du versuchst gerade mit einer Zeichenkette zu Rechnen "
ja ich weiß
"Die frage ist warum du einen String durch 2 teilen willst und dann mal 100?"
die Frage ist berechtigt *g*, ansatt der 2 kommt auch später was anderes rein, wollt nur schaun ob die Formel klappt (Anfänger)
okay vielen dank, werd gleich ausprobieren
-
aber anstatt dem i sollte sB(String) stehen
Aber ich darf ´ja nicht sB/2 schreiben
Wie geht das dann, dasversteh ich nicht
-
Dann mach es doch so:
sA.Format("%d", ((atoi(sB)/2)*100));
Und ganz allgemein: Damit genauer gerechnet wird, sollte man immer erst malnehmen bevor man teilt - sonst kann es leicht vorkommen, dass das Ergebnis falsche ist (wegen Rundungsfehlern).
Also besser:
sA.Format("%d", ((atoi(sB)*100)/2));
-
aah, okay atoi hab ich irgendwo hier schon mal gelesen
Suppi, klappt wunderbar, mercidanke euch
-
ach nochwas
sA.Format("%d", ((atoi(sB)/2)*100));
bzw
sA.Format("%d", ((atoi(sB)*100)/2));wenn jetzt z.B sB 5 ist, --> dann ist sA 200
Was muss man denn machen ,dass genau gerechnet wird mit Restdanke
-
Hallo
also im Moment hab ich das, und es wird auf eine Nachkommastelle gerundet
int iB = atoi(sB); float fA = float((iB / 2) * 100); sA.Format("%.1f",fA);
Wenn nun sB 7 ist, dass ist sA 300
Wie bekomm ich das hin ,dass aber sA richtigerweise 350 ist?
Vielen Dank
-
Du musst zuerst nach float casten und dann teilen
int iB = atoi(sB); float fA = (((float) iB) / 2.0) * 100.0); sA.Format("%.1f",fA);
-
hi Airdamn
perfekt, vielen danke für deine Hilfe
grüße
An der Stelle:
float fA = (((float) iB) / 2.0) * 100.0);bekomm ich ein WARNING
warning C4244: 'initializing' : conversion from 'double' to 'float', possible loss of dataist das egal?
-
Geht dafür nicht atof statt atoi und den Formatstring ersetzen?
Also so:sA.Format("%.lf", ((atof(sB)*100)/2));
-
hi
probiers gleich mal ausPerfekt, jetzt sind die WARNINGS weg
Besten dank