Single, Float, Multiplikation mit 0

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
gillian_x
Beiträge: 30
Registriert: Sa 22. Nov 2014, 14:24

Single, Float, Multiplikation mit 0

Beitrag von gillian_x »

Hilfe!

Stehe grad vor einem riesen Problem!!!

Ich habe mehrere Rechnungen in meinem Programm und wenn ich einen Wert mit 0,00000000 multipliziere bekomme ich eine Fehlermeldung... wenn es allerdings nur 0 ist funktioniert ist und es funktioniert ebenso wenn die Zahl 0,021052632 lautet.

Habe alles als Single deklariert und Rechnung sieht so aus:

Code: Alles auswählen

ergebniss:= StrToFloat(slstrom[nz3])*StrToFloat(slstromf[nz2]);
Die Zahlen befinden sich alle in verschiedenen Stringlisten.

Muss ich jetzt aus jeder 0,00000000 eine 0 machen? Oder gibt es einen Trick?

Danke!

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Single, Float, Multiplikation mit 0

Beitrag von marcov »

Nutze die überladene Version mit TFormatsettings. StrToFloat berücksichtigt Locale/Spache also es nimmt die OS Einstellungen dafür, dezimaler Trennungszeichen (0.000 oder 0,000) inklusive.

Auf Windows kann man mit Sysutils.GetLocaleFormatSettings(LCID: Integer; var FormatSettings: TFormatSettings); ein Tformatsettings für Deutsch beladen unabhängig von Sprache Einstellungen.

Werte fuer LCID kann man hier finden, zb

Code: Alles auswählen

 
 
German - Germany            $0407       1031
German - Austria               $0c07      3079
German - Liechtenstein	$1407	5127
German - Luxembourg	$1007	4103
German - Switzerland  	$0807	2055
 

Developer CPS
Beiträge: 15
Registriert: Fr 28. Aug 2015, 18:44
OS, Lazarus, FPC: Windows 10 (L 1.4.4, FPC 2.6.4)
CPU-Target: 64-Bit
Wohnort: Baden-Württemberg, Deutschland
Kontaktdaten:

Re: Single, Float, Multiplikation mit 0

Beitrag von Developer CPS »

Wenn du etwas mit null multiplizieren möchtest, kannst du doch auch einfach die entsprechende Float-Zahl auf null zu setzen:


Hier mal ein Stück des Codes:

Code: Alles auswählen

var f: float;
{...}
f := 0;
ist das Selbe wie

Code: Alles auswählen

var f: float;
{...}
f := f*0;

Ich hoffe, ich konnte helfen...

MfG Developer CPS



[Edit 30-08-2015 20:22]:

Zuvor kannst du ja noch eine If-Abfrage schalten, die ungefähr so aussieht:

Code: Alles auswählen

var x, f: float; //x=Multiplikator; f=zu multiplizierende Zahl
{...}
If x = 0 then f := 0 else begin f := f*x;

Antworten