AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm Analye

Ein Thema von FACS · begonnen am 9. Aug 2015 · letzter Beitrag vom 9. Aug 2015
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#1

AW: Programm Analye

  Alt 9. Aug 2015, 08:54
Hallo FACS...

Willkommen hier
Zitat:
x := (x / 2); //Bezüglich dieser Zeile gibt mir Lazarus aus unit1.pas(73,15) Error: Incompatible types: got "Double" expected "LongInt"
Die Fehlermeldung ist logisch. X ist als Integer (Ganzzahl) deklariert. Mit der Division "könnte" ein Nachkommaanteil herauskommen. Deshalb funktioniert die Zuweisung nicht.
Wenn das Ergebnis grundsätzlich eine Ganzzahl sein soll verwende div statt /.

PS: Und schau dir die Hilfe zu div an damit du verstehst.

PS2: Bitte setze deinen Quelltext in Delphi Tags. (der Button mit dem Helm)
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#2

AW: Programm Analye

  Alt 9. Aug 2015, 09:27
Das ganze mal als Aufgabe erfasst:
- mit dem "Ist Mod 2 gleich 0" steht da ja, das nur gerade und somit restlos durch 2 teilbare Zahlen anschließend durch 2 ganzzahlig geteilt werden.
- ganzzahliges teilen geht in Pascal mit "div"
- ganzzahliges teilen von positiven 2er Potenzen geht auch binär mit "shr" und auch ein MOD mit 2er Potenzen geht binär mit "and"

Delphi-Quellcode:
if ((x and 1) = 0) then begin
    x := (x shr 1);
    Panel1.Caption := IntToStr (x);
end
- wenn dir das so seltsam vorkommt.. bist du damit nicht allein und in Pascal muss man das nicht so machen (aber hilft beim Verständnis wie die Ganzzahlen intern gespeichert sind)
- wenn du verstehst warum dies auch funktioniert, dann klappt es auch ganz von alleine mit dem warum fürs "div"
- Funktion als Text: bei geraden Zahlen ist das LSB immer 0 und das Rechtsschieben um 1 entspricht der Division durch 2
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Programm Analye

  Alt 9. Aug 2015, 14:08
Und selbst wenn die Division "aufgehen" sollte ohne Nachkommastellen, bei 4:2 zum Beispiel, wird für dem Comoputer das Ergebnis 1,9999999999999999999999999999999999999 im ungünstigsten Fall sein. (4:2 war nur ein Beispiel zur Verdeutlichung.) Das liegt daran, dass die Umwandlung Dezimal/Binär und Binär/Dezimal nicht immer genau sein kann, da manche Dezimalzahlen nicht 1:1 binär abgebildet werden können.

Aber wie schon gesagt, Delphi erwartet bei der Division mit / eine Fließkommazahl als Ergebnis.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz