Zahlen überprüfen
-
Hallo
5,5 ist ja auch kein int oder
besser ist double
oder du multiplizierst beide Zahlen mit zB 10 dann geht wieder alles
MfG
Klaus
-
KlausB schrieb:
oder du multiplizierst beide Zahlen mit zB 10 dann geht wieder alles
...ausser natürlich, so böse Menschen wie ich benutzen das Programm und geben 6.66 ein (o;
-junix
-
PuppetMaster2k schrieb:
Natürlich bekommst du den, wenn du Integer nehmen willst. Bei Fließkommazahlen verwendet man float oder double (wobei in diesem fall wohl float ausreicht
)
Der Operator % (Modulo-Operator) liefert den Rest einer ganzzahligen Division, er kann nicht auf Gleitkommatypen angewandt werden.
-
Hallo
@junix
war nur als Beispiel gedacht (natuerlich muss man entweder die Eingabe beschraenken oder die Nachkommastellen auswerten
(sollte ja nur ein Hinweis sein, wie man soetwas loesen kann)MfG
Klaus
-
hallo mit float habe ich es auch probiert aber dann kommt der fehler
[C++ Fehler] Unit1.cpp(23): E2060 Unzulässige Verwendung einer Fließkommazahl
-
Ups!
Mein Fehler +gg+
-
kann mir jemand sagen wie ich das problem lösen kann?
-
KlausB hat dir schon einen Ansatz gegeben, mit dem du weiterhin int benutzen kannst. Allerdings solltest du dann deine Eingabemöglichkeiten beschränken (z.B. max. 3 Nachkommastellen)
-
Ich hab auch noch 'ne Variante, die ohne Beschränkungen bei der Eingabe auskommt.
float f1 = 44.41; float f2 = 5.55; float f_result = f1/f2; int i_result = f_result; // ggf. vorh. Nachkommastellen werden abgeschnitten if (i_result < f_result) // Beispiel: 3 ist kleiner als als 3.9536 Caption = "nicht glatt teilbar"; else // Beispiel: 3 ist gleich 3.0(0000) Caption = "glatt teilbar";
Ggf. könnte/müsste man i_result für den Vergleich noch nach float casten, scheint aber auch so zu funktionieren.
-
Und wenn du die Nachkommastellen behalten willst:
int iAnzahl /*= Anzahl der Zahlen nach dem Punkt bzw. Komma*/ ; int iMal /*= 10 hoch iAnzahl*/ ; if ((Zahl1*iMal) % (Zahl2*iMal)) ja(); else nein();
mfg
BA
-
BCBuilder Anfänger schrieb:
die Nachkommastellen behalten
Die gehen für f_result ja nicht verloren.
Davon abgesehen beinhaltet dein Vorschlag wieder eine Einschränkung bei der Zahl der Nachkommastellen, bzw. macht eine Ermittlung dieser Anzahl erforderlich.
-
@jansen
hast du elegant gelöst.
Naja, meine Trust ist, ich bin ein Anfänger!mfg
BA