Griller Geschrieben 27. Oktober 2014 Teilen Geschrieben 27. Oktober 2014 Hallo, wir haben die Aufgabe das Seitenverhältnis einer gegebenen Auflösung zu berechnen. An sich ist das auch überhaupt kein Problem: seitenverhaeltnis=4.00/3.00; Damit man das schöner ausgeben lassen kann (4:3, 16:9 etc) habe ich folgende if-Schleife gebastelt (Dabei würde ich gerne auch bleiben, weil wir switch-case noch nicht besprochen haben): if(seitenverhaeltnis==4/3) //Diese Verzweigung formatiert das errechnete Seitenverhaeltnis in die Werte 4:3, 16:9 oder 16:10 { seitenverhaeltnis_h=4; seitenverhaeltnis_v=3; } else { if(seitenverhaeltnis==16/9) { seitenverhaeltnis_h=16; seitenverhaeltnis_v=9; } else { if(seitenverhaeltnis==16/10) { seitenverhaeltnis_h=16; seitenverhaeltnis_v=10; } } } Leider funktioniert das nicht. Es wird für seitenverhaeltnis_h und seitenverhaeltnis_v jeweils eine 0 ausgegeben. Habe ich hier echt so einen großen Denkfehler? Hoffe auf eure Mithilfe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 27. Oktober 2014 Teilen Geschrieben 27. Oktober 2014 int/int ergibt int. 4/3 ist 1, genau wie 16/10 und 16/9. Ich würde dir aber raten, das Seitenverhältnis als Bruch zu behandeln und zu kürzen. Dann kommt das Programm auch mit unvorhergesehenen Seitenverhältnissen klar. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Griller Geschrieben 27. Oktober 2014 Autor Teilen Geschrieben 27. Oktober 2014 Die Variablen habe ich als float deklariert. Auch wenn ich statt 4 4.00 verwende funktioniert es nicht. Bin gerade echt am verzweifeln. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 27. Oktober 2014 Teilen Geschrieben 27. Oktober 2014 Lass dir mal ausgeben, welcher Wert in seitenverhaeltnis steht. Grundsätzlich ist es keine gute Idee, Fließkommavariablen auf Gleichheit zu testen, wegen der eingebauten Ungenauigkeit. Besser wäre so etwas, wenn du es denn unbedingt nur mit vorgegebenen Verhältnissen machen willst: if(h * 3 == v * 4) // 4:3 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Griller Geschrieben 27. Oktober 2014 Autor Teilen Geschrieben 27. Oktober 2014 Lass dir mal ausgeben, welcher Wert in seitenverhaeltnis steht. Grundsätzlich ist es keine gute Idee, Fließkommavariablen auf Gleichheit zu testen, wegen der eingebauten Ungenauigkeit. Besser wäre so etwas, wenn du es denn unbedingt nur mit vorgegebenen Verhältnissen machen willst: if(h * 3 == v * 4) // 4:3 Mit dem Code funktioniert es komischerweise. Rechnerisch ist das ja identisch. Danke dafür:) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.