Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Wissenschaftliche Notation in "normale" Zahl umwandeln (https://www.delphipraxis.net/78803-wissenschaftliche-notation-normale-zahl-umwandeln.html)

Polarwar 11. Okt 2006 10:45


Wissenschaftliche Notation in "normale" Zahl umwan
 
Hallo zusammen,

ich habe da mal wieder ein kleines Problem! Entweder ich habe mein Programmierwissen am
letzten WE geschrottet, ich steh einfach nur auf der Leitung, oder ich bin wirklich nicht inteligent
genug??

Ich bekomme in einer CSV-Datei Daten geliefert, die ich in eine Datenbank importieren möchte, soweit kein Problem.
Nun steht da in einem Feld eine wissenschaftliche Zahl (1,74E+12) und die möchte ich als "echte" Zahl in mein Prg einlesen.
Ich kann diese Daten nur nicht einlesen, da er meckert es wäre keine richtige Zahl?

Wie kann man sowas formatieren, ich möchte doch einfach nur 174000000001 als normale Zahl haben.

Hilfe wäre Klasse....

Gruß
Polarwar

dino 11. Okt 2006 11:26

Re: Wissenschaftliche Notation in "normale" Zahl u
 
zunächst ist 1,74E+12 = 1740000000000 und nicht 174000000001 und ausserdem bedeutet1,74E+12, dass du 1,74 * (10hoch12) nehmen musst.
jetzt musst du deinen string(alles, was etwas wie E hat kann scon keine Zahl sein) in den Teil vor dem E und dem Teil nach dem E zerlegen, dann dass , in . übersetzen.
dann 1.74 in ne Zahlvariable bringen, dass selbe mit +12 und dann 1.Zahl * (10 hoch 2.Zahl) nehmen

hoch ist doch das ^ Zeichen oder? also i:=i1*(10^(i2))

mkinzler 11. Okt 2006 11:34

Re: Wissenschaftliche Notation in "normale" Zahl u
 
Wie liest du es ein?

3_of_8 11. Okt 2006 11:48

Re: Wissenschaftliche Notation in "normale" Zahl u
 
Ähm, wofür gibt es StrToFloat?

dino 11. Okt 2006 11:59

Re: Wissenschaftliche Notation in "normale" Zahl u
 
kann strtofloat auch 1,74E+12???
tatsächlich kann er :)

das ergebnis ist aber ein integer oder nicht?

r2c2 11. Okt 2006 12:05

Re: Wissenschaftliche Notation in "normale" Zahl u
 
Zitat:

Zitat von dino
kann strtofloat auch 1,74E+12???
tatsächlich kann er :)

das ergebnis ist aber ein integer oder nicht?

Wieso Integer? Heißt nicht umsonst StrToFloat...

Die Funktion muss schließlich auch mit sowas zurande kommen: 1,75E-5

mfg

Chrstian

3_of_8 11. Okt 2006 12:06

Re: Wissenschaftliche Notation in "normale" Zahl u
 
:wall:

Natürlich, strtofloat heißt strtofloat, weil es einen Ingeger zurückgibt.

Eine Zahl dieser Größenordnung ist sowieso zu groß für einen Integer, wenn dann geht ein Int64.

Polarwar 11. Okt 2006 13:22

Re: Wissenschaftliche Notation in "normale" Zahl u
 
Hmm, das mit dem StrToFloat klappt bei mir nicht. Wenn ich einer Floatvar einen solchen Wert
zunorde kommt da mit constanter Bosheit eine Null raus!!

fDummy := StrToFloat('1,74E+12');

Das Ergebnis kann nicht 0 sein, besser gesagt es darf nicht null sein! :gruebel:

Ich möchte doch einfach nur eine gaaannnz normale Zahl haben und nicht son wissenschaftlichen String! :zwinker:

Gruß
Polarwar

3_of_8 11. Okt 2006 13:27

Re: Wissenschaftliche Notation in "normale" Zahl u
 
Welchen Typ hat fDummy? Welche Delphi-Version hast du? Wie gibst du das Ding aus?

Folgender Code funktioniert bei mir (D7 Personal) prima:
Delphi-Quellcode:
{$O-} //Damit der Compiler fDummy nicht wegoptimiert

procedure TForm1.FormCreate(Sender: TObject);
var fDummy: Real;
begin
fDummy := StrToFloat('1,74E+12');
end;
Wenn ich auf das end; nen Haltepunkt setze und den Evaluator anschmeiße, kriege ich den korrekten Wert.

uwewo 11. Okt 2006 13:30

Re: Wissenschaftliche Notation in "normale" Zahl u
 
Erstelle mal eine Form mit 2 Labels und ein Button,
dann vergib für die Caption von Label1 den Wert 1,74E+12.
Beim Ereignis von Button1.OnClick schreibst Du

Delphi-Quellcode:
Label2.Caption := FloatToStr(StrToFloat(Label1.Caption));
Du wirst sehen es funktioniert


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr.
Seite 1 von 2  1 2      

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