ich will das x=80 ist aber irgendwie scheint hier was anderes herauszukommen..was mache ich falsch? x:=315-((235/120)*120);
Tom schrieb: > x:=315-((235/120)*120); Warum nicht x:=80? Dann hast du 80. Also: Woher kommen die Zahlen und die Rechnung? Zudem: In welchem Körper / Zahlensystem rechnest du? In der Menge der nat. Zahlen kommt oben 195 raus ...
Tom schrieb: > ich will das x=80 ist > aber irgendwie scheint hier was anderes herauszukommen..was mache ich > falsch? > > x:=315-((235/120)*120); Zuerst multiplizieren - dann dividieren. x:=315-((235*120)/120);
Klammern falsch gesetzt. So gehts: x:=(315-235)/120*120 Das 120/120 kann man sich dann natürlich sparen...
hmpf ich dachte der rechnet intern mit flot und wenn das Ergebnis ganzzählich ist, isrt es völlig egal :-( gibt es einen eleganteren weg als erst mit float zu rechnen und dann mit xint=xfloat; zu konvertieren?
Angenommen der Datentyp ist eine Ganzzahl (int, long), dann steht bedingt durch die Klammer um 235/120 dort in etwa x=315-(1*120), es sollte also 195 als Ergebnis rauskommen. Nimm die Klammer weg, dann optimiert das der Compiler das hin- und hergerechne eh weg und rechnet einfach 315-235 oder rechne mit Floats, dann kommen die richtigen Ergebnisse auch mit Klammern raus, solange du am Ende geschickt rundest, um vorherige Rechenfehler bei den Einzeloperationen auszugleichen. MfG Florian
die ganzen zahlen sind natürlich variablen im programm und dienen hier nur der vereinfachung!
Pete K. schrieb: > Klammern falsch gesetzt. So gehts: > x:=(315-235)/120*120 > > Das 120/120 kann man sich dann natürlich sparen... Nein. Wenn die vorherige Rechnung 195 ergibt, dann diese genau 0. Ist doch jetzt nicht so schwer a) Klammersetzung b) von links nach rechts und c) nach jedem Schritt den Nachkommateil zu vergessen. x:=(315-235)*120/120 Aber auch nur dann, wenn (315-235)*120 als größter Zwischenwert noch in den Datentyp passt.
Ich habe es mit QBASIC ausprobiert. CLS x = 315 - ((235 / 120) * 120) PRINT x QBASIC bekommt 80 raus. ---------------------------------- Python: >>> x = 315 - ((235 / 120) * 120) >>> x 80.0 >>> Und Python bekommt auch 80 raus.
Günter Lenz schrieb: > Ich habe es mit QBASIC ausprobiert. > ... > QBASIC bekommt 80 raus. > > ---------------------------------- > > Python: > ... > 80.0 Die Zuweisung mit := deutet eher auf Algol oder Pascal hin. In beiden Sprachen kommt aber ebenfalls 80.0 heraus. Sollte stattdessen 195 herauskommen, geht es hier wahrscheinlich um BCPL ;-)
Günter Lenz schrieb: > Ich habe es mit QBASIC ausprobiert. > > CLS > x = 315 - ((235 / 120) * 120) > PRINT x > > QBASIC bekommt 80 raus. > > ---------------------------------- > > Python: > >>>> x = 315 - ((235 / 120) * 120) >>>> x > 80.0 >>>> > > Und Python bekommt auch 80 raus. Auch mit dem Taschenrechner kommt 80 raus. Und mit dem Windows-Rechner auch.
Günter Lenz schrieb: > Und Python bekommt auch 80 raus. Das gilt für Python 3, das sinnvollerweise nur auf besonderen Wunsch (mit //) ganzzahlig dividiert. Mit Python 2, das ints ganzzahlig dividiert, kommt 195 raus.
Maxx schrieb: > npn schrieb: >> Und mit dem Windows-Rechner auch. > > Drück mal ALT+3 und versuch es nochmal. Tom hat nirgendwo auch nur eine Andeutung gemacht, daß er mit Ganzzahlen rechnet: Tom schrieb: > ich will das x=80 ist > aber irgendwie scheint hier was anderes herauszukommen..was mache ich > falsch? > > x:=315-((235/120)*120);
npn schrieb: > Tom hat nirgendwo auch nur eine Andeutung gemacht, daß er mit Ganzzahlen > rechnet: Eben. Er schreibt, wie so viele so oft, nicht, was hier die Voraussetzungen sind. Eindeutig beantwortbar wäre die Frage gewesen, wenn er geschrieben hätte: Plattform xy, programmiert mit der Sprache abc, compiliert mit dem Compiler def, mit folgenden Directiven.... Aber nee: er haut uns zusammenhanglos einfach eine Gleichung hin. Mit dem, was gegeben ist, lautet die Antwort: da kommt 80 heraus. (Vielleicht lautet die Antwort aber auch 42 und der TO weiß nur nicht, wie eigentlich die Frage lautet...)
lol....so schlau weider wie alle sind..wenn ich genau wüßte worauf es akommt, dann wüßte ich wohl auch woean es liegt...wieder einer schlauer als der andere hier... mit Float geht es jetzt jedenfalls..damit ist das Problem erledigt...schönen Abend noch
Max schrieb: > lol....so schlau weider wie alle sind..wenn ich genau wüßte worauf > es > akommt, dann wüßte ich wohl auch woean es liegt...wieder einer schlauer > als der andere hier... > mit Float geht es jetzt jedenfalls..damit ist das Problem > erledigt...schönen Abend noch Und was sagt Tom dazu?
Max schrieb: > wenn ich genau wüßte worauf es akommt, dann wüßte ich wohl auch woean es > liegt... Und warum sagst du nicht einfach, mit WAS und WORAUF du solche Rechenergebnisse ermittelst? Tom schrieb: > was mache ich falsch? Du teilst uns nötige Rahmenbedingungen nicht mit. Oder soll man da treffsicher erraten, wie du zu diesem falschen Ergebnis kommst? Max schrieb: > mit Float geht es jetzt jedenfalls..damit ist das Problem erledigt... Dir ist schon klar, dass bei bestimmten Rechnerarchitekturen (t.B. kleine 8 Bit uC) ein float ganz hübsch Ressourcen braucht und langsam ist? Und, Tom und Max: Nutzungsbedingungen des Forums beachten! https://www.mikrocontroller.net/user/conditions
:
Bearbeitet durch Moderator
Er hat nur 2 Namen, und das Problem ist so alltäglich und glaubwürdig, dass ich nicht meine, Tommax wäre ein echter Troll.
Lothar M. schrieb: > dass ich nicht meine, Tommax wäre ein echter Troll. Magst Du Dir wirklich vorstellen, dass es Leute gibt, die eine echte Frage so wie oben formulieren würden? Also mir ist da ein Troll wirklich lieber.
Max schrieb: > lol....so schlau weider wie alle sind..wenn ich genau wüßte worauf es > akommt, dann wüßte ich wohl auch woean es liegt...wieder einer schlauer > als der andere hier... > mit Float geht es jetzt jedenfalls..damit ist das Problem > erledigt...schönen Abend noch Also die einzige verbleibende Frage ist dann, ob Tom-Max ein Troll oder Arschloch ist.
Mark L. schrieb: > Also die einzige verbleibende Frage ist dann, ob Tom-Max ein Troll oder > Arschloch ist. Er hat den zitierten Text offenbar voller Ärger geschrieben. Soll ich Dir was sagen? Nach den wirklich saublöden Antworten kann ich das verstehen. Es gibt eben nur 2 Möglichkeiten: Kommentarlos herunterschlucken oder mit gleicher Münze zurückzahlen. Viele bringen das Herunterschlucken nicht fertig...
Nothing Toulouse schrieb: > Nach den wirklich saublöden Antworten kann ich das verstehen. Darf ich diese Zeile so verstehen, dass Du die Fragestellung völlig in Ordnung findest? Für mich klingt das wie: "Ich möchte, dass die Farbe = lila ist, ich kriege aber rosa raus. Ich mache blau und rot und raus kommt rosa. Was mache ich falsch?" Woher soll das Forum nun wissen, ob ich versuche, meine Wand rosa zu steichen und dazu Farben in einem Eimer mische oder ob ich einen bunten Lichteffekt durch Anstrahlen einer Wand mit farbigen Scheinwerfern erzeugen will oder (und das ist es, was ich tatsächlich machen will aber das kann man ja sicher erraten, denn das ist ja offensichtlich das naheliegendste) ob ich lilafarbene Schweine züchten will?!!!!?
>> Nach den wirklich saublöden Antworten kann ich das verstehen. Michael S. schrieb: > Darf ich diese Zeile so verstehen, dass Du die Fragestellung völlig in > Ordnung findest? Völlig. Michael S. schrieb: > Für mich klingt das wie: > "Ich möchte, dass die Farbe = lila ist, ich kriege aber rosa raus. > Ich mache blau und rot und raus kommt rosa. Was mache ich falsch?" Dann stellst Du Dich absichtlich blöd. Warum? Fakt ist: Bei einer Gleichung kommt nicht das erwartete Ergebnis heraus. Woran kann das liegen? -> Die Regeln wurden nicht beachtet (z.B.Punkt vor Strich) -> Beim Umstellen der Formel wurde ein Fehler gemacht -> Wenn ein Programm für das falsche Ergebnis "verantwortlich" ist, dann waren Datentypen falsch gewählt. Da sind keine lilafarbenen Schweine. Da braucht man auch keine Wände anzustrahlen. -> Wer einen solchen Haufen Scheiße zur Antwort gibt, will den Fragesteller provozieren. Darauf gibt es dann die entsprechende Antwort.
Nothing Toulouse schrieb: > Michael S. schrieb: >> Darf ich diese Zeile so verstehen, dass Du die Fragestellung völlig in >> Ordnung findest? > Völlig. Du darfst denken was Du willst. Ich aber auch!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.