Rechnen mit Dezimalzahlen

Anfängerfragen zum Programmieren mit PureBasic.
rolstra
Beiträge: 18
Registriert: 05.10.2008 19:37

Rechnen mit Dezimalzahlen

Beitrag von rolstra »

Hallo,
nach längerer "Abstinenz" habe ich wieder mit PureBasic programmiert, was mir großen Spass gemacht hat! Leider bin ich als (immer noch) Anfänger an dem folgenden Problem gescheitert:

Ich habe ein einfaches Programm geschrieben - zwei Eingabefelder (werden aus einem StringGadget ausgelesen) und zwei Ausgabefelder (Ergebnis wird in einen StringGadget geschrieben):

Code: Alles auswählen

Procedure Button_Berechnen(EventType)
  EingabeFeld1$ = GetGadgetText(#String_Eingabefeld1)
  Debug EingabeFeld1$
  EingabeFeld1 = ValD(EingabeFeld1$)
  Debug EingabeFeld1 ;es werden keine Dezimalzahlen angezeigt!
  EingabeFeld2$ = GetGadgetText(#String_Eingabefeld2)
  Debug EingabeFeld2$
  EingabeFeld2 = ValD(EingabeFeld2$)
  Debug EingabeFeld2 ;es werden keine Dezimalzahlen angezeigt!
  Ausgabewert1 = EingabeFeld1*EingabeFeld2
  Ausgabewert2 = EingabeFeld1/EingabeFeld2
  SetGadgetText(#String_Ausgabefeld1, StrD(Ausgabewert1,8))
  SetGadgetText(#String_Ausgabefeld2, StrD(Ausgabewert2,8))
Gebe ich nun z.B. im ersten Eingabefeld die Zahl "4" ein und im zweiten Eingabefeld die Zahl "3", dann wird im Ausgabefeld richtig die Zahl "12" angezeicht (viermal drei), im zweiten Feld jedoch nur die Zahl "1". Das korrekte Ergebnis müsste jedoch sein: 1,33333333

Wie kann ich den Code dahingehend abändern, dass mir Dezimalzahlen angezeigt warden?

Vielen Dank für eure Hilfe!
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Rechnen mit Dezimalzahlen

Beitrag von STARGÅTE »

Du musst deine Variablen als Doubles (oder Floats) definieren:

Code: Alles auswählen

Protected EingabeFeld1.d, EingabeFeld2.d, Ausgabewert1.d, Ausgabewert2.d
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
rolstra
Beiträge: 18
Registriert: 05.10.2008 19:37

Re: Rechnen mit Dezimalzahlen

Beitrag von rolstra »

Vielen Dank, das habe ich übersehen …

Wenn ich nun in das erste Feld z.B. "5" eingebe und in das zweite "0,25" dann wird im Ausgabefeld 2 die Meldung "+Infinity" ausgegeben. D.h. es kann nicht durch eine Zahl kleiner Null dividiert werden, wenn die Werte als Double definiert sind?

Vielen Dank
rolstra
Beiträge: 18
Registriert: 05.10.2008 19:37

Re: Rechnen mit Dezimalzahlen

Beitrag von rolstra »

…. sorry habe vergessen die Werte bei einer neuen Eingabe wieder auf Null zu setzen. Funktioniert so natürlich!!!

Vielen Dank und Grüße
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Rechnen mit Dezimalzahlen

Beitrag von STARGÅTE »

Beachte bitte, dass "0,25" das falsche Format hat. Dezimalzahlen werden in PureBasic immer mit Punkt geschrieben: "0.25"
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten