int zahlen dividieren und kommazahl ausgeben
-
Hallo wie kann man aus dem int ergebniss ein ergebniss mit kommazahl bekommen ?
Es darf keine float oder double Variable benutzt werden....
Ich hab das so probiert aber das funktionierte nicht
#include <iostream> using namespace std; int main(int argc, char* argv[]) { int a,b,erg; cout<<"Zahl 1: "; cin>>a; cout<<"Zahl 2: "; cin>>b; erg = 0.1* a / b ; cout<<"Erg : "<<erg<<"\n"; //das ergebniss soll als kommazahl ausgeben werden system("PAUSE"); } //---------------------------------------------------------------------------
-
casten würde ich sagen, wenn das nicht als verwenden von float zählt
-
Dann solltest du das Ergebnis aber auch nicht in einer Variable speichern, sondern in einem temporären Ausdruck ausgeben lassen.
-
Gibt es eine Angabe über Anzahl der Kommastellen? Wenn nicht, dann geht das relativ einfach:
#include <iostream> const int DECIMAL_ADJ = 100; int main() { int first, second; std::cin >> first; std::cin >> second; first *= DECIMAL_ADJ; second *= DECIMAL_ADJ; int result = (first * DECIMAL_ADJ) / second; std::cout << (result / DECIMAL_ADJ) << '.' << (result % DECIMAL_ADJ) << std::endl; return 0; }
So hast du eine Genauigkeit auf 2 Kommastellen
Grüssli
-
Warum nicht einfach:
#include <iostream> int main() { int a, b; std::cin >> a; std::cin >> b; std::cout << static_cast<double>(a)/b << std::endl; return 0; }
-
Das ging aber irgendwie viel unkomplizierter irgendwie mit 0.1 * oder so ich weiss net mehr genau wie das war _
-
Ach, ich trottel, du darfst nur keine Variablen verwenden? Nicht komplett auf double und float verzichten ...
#include <iostream> int main() { int a, b; std::cin >> a; std::cin >> b; std::cout << (1.0 * a / b) << std::endl; return 0; }
Grüssli
-
Genau das war es Dravere
ty :):):):):)
-
Nexus schrieb:
Dann solltest du das Ergebnis aber auch nicht in einer Variable speichern, sondern in einem temporären Ausdruck ausgeben lassen.
Ohne Code scheint hier gar niemand mehr in der Lage zu sein, selber etwas umzusetzen...
-
Nexus schrieb:
Nexus schrieb:
Dann solltest du das Ergebnis aber auch nicht in einer Variable speichern, sondern in einem temporären Ausdruck ausgeben lassen.
Ohne Code scheint hier gar niemand mehr in der Lage zu sein, selber etwas umzusetzen...
Tja, deine Angabe stimmt aber auch nicht. Er hat mit 0.1 multipliziert anstatt mit 1.0 ... ok, der Fehler hätte ihm eigentlich auffallen müssen, aber hey, nicht jeder ist zu jederzeit so klar im Kopf ... ...
Zudem, so ein kleines Problem, ohne Code zu behandeln, dauert viel zu lange
Grüssli
-
Dravere schrieb:
...
#include <iostream> int main() { int a, b; std::cin >> a; std::cin >> b; std::cout << (1.0 * a / b) << std::endl; return 0; }
4
0
1.#INF
Drücken Sie eine beliebige Taste . . .
-
gg schrieb:
4
0
1.#INF
Drücken Sie eine beliebige Taste . . .Was ist daran so lustig? Ist doch absolut korrekt ... Irgendwie entgeht mir der Witz ...
Grüssli
-
Dravere schrieb:
Tja, deine Angabe stimmt aber auch nicht. Er hat mit 0.1 multipliziert anstatt mit 1.0 ... ok, der Fehler hätte ihm eigentlich auffallen müssen, aber hey, nicht jeder ist zu jederzeit so klar im Kopf ... ...
Es ging ja eigentlich auch nicht um die
0.1
. Ich überlegte mir einfach, ob ich den Code noch schreiben sollte. Ich entschied dann, es nicht zu tun - in der Hoffnung, der Threadersteller würde selber überlegen, was ich damit gemeint haben könnte, und daraus lernen. Offensichtlich war das ein Fehler.Mal abgesehen davon ist es sowieso nicht gerade optimal, einen Cast durch eine Multiplikation zu umgehen. XMaster hat ja bereits geschrieben, wie es geht; alternativ kann man auch beide Operanden casten. Diesmal mit Code:
std::cout << static_cast<float>(a) / static_cast<float>(b) << std::endl;