![]() |
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 |
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)) |
Re: Wissenschaftliche Notation in "normale" Zahl u
Wie liest du es ein?
|
Re: Wissenschaftliche Notation in "normale" Zahl u
Ähm, wofür gibt es StrToFloat?
|
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? |
Re: Wissenschaftliche Notation in "normale" Zahl u
Zitat:
Die Funktion muss schließlich auch mit sowas zurande kommen: 1,75E-5 mfg Chrstian |
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. |
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 |
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:
Wenn ich auf das end; nen Haltepunkt setze und den Evaluator anschmeiße, kriege ich den korrekten Wert.
{$O-} //Damit der Compiler fDummy nicht wegoptimiert
procedure TForm1.FormCreate(Sender: TObject); var fDummy: Real; begin fDummy := StrToFloat('1,74E+12'); end; |
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:
Du wirst sehen es funktioniert
Label2.Caption := FloatToStr(StrToFloat(Label1.Caption));
|
Re: Wissenschaftliche Notation in "normale" Zahl u
Jepp, habe das Problem gelöst.... mit der StrToFloat-Variante geht es.
Hatte es beim ersten Versuch anscheiend irgendwie falsch gemacht, auf die Idee war ich nämlich auch schon gekommen, aber nu, hauptsache es funktioniert!! :P Grätz Polarwar |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 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