Denkfehler Umrechnung

Gast #4207282
Lesenswert?
• ▲
▼
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?
(Firma: Pesch Marinescheinwerfer) #4207283
Lesenswert?
• ▲
▼
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
Gast #4207288
Lesenswert?
• ▲
▼
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.
Gast #4207295
Lesenswert?
• ▲
▼
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.
Gast #4207360
Lesenswert?
• ▲
▼
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.
Gast #4207405
Lesenswert?
• ▲
▼
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);
#4207419
Lesenswert?
• ▲
▼
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...)
Gast #4207427
Lesenswert?
• ▲
▼
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
Gast #4207437
Lesenswert?
• ▲
▼
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?
Moderator (Firma: Titel) Persönliche Seite #4207456
Lesenswert?
• ▲
▼
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
Gast #4207565
Lesenswert?
• ▲
▼
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.
Gast #4207583
Lesenswert?
• ▲
▼
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...
#4208142
Lesenswert?
• ▲
▼
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?!!!!?
Gast #4208305
Lesenswert?
• ▲
▼
>> 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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.