Float to Ascii String im Eigenbau

Gast #1663502
Lesenswert?

HalliHallo

Die Funktion dtostre(...) aus stdlib.h ist eigentlich das was ich 
brauche und funktioniert auch soweit.

Jedoch möchte ich meinen Ascii String im Format x.xxxx-E009.
Also das heisst, wenn ich eine Float Zahl 1.0321 in die Funktion gebe, 
soll 1.0321-E009 (in einem Char String im ASCII Format) zurück gegeben 
werden. bei 1032.1 entprechend 1.0321-E006.

Wie stelle ich das am besten an?

Vielen Dank für Hilfe

Grüsse Stefan
Gast #1663538
Lesenswert?

Mir ist noch unklar, was genau Du willst.

> Also das heisst, wenn ich eine Float Zahl 1.0321 in die Funktion
> gebe, soll 1.0321-E009 (in einem Char String im ASCII Format)
> zurück gegeben werden. bei 1032.1 entprechend 1.0321-E006.

1.0321-E009 ist aber was anderes als 1.0321 .
Es ist 0,0000000010321
d.h. Du musst 1.0321 noch durch 1000000000 (1.0e+9) teilen, um auf das 
gewünschte Ergebnis zu kommen.

Üblicherweise schreibt man nicht 1.0321-E009 , sondern 1.0321E-009 .

Oder meinst Du ganz was anderes? Dann beschreibe es genauer.
Gast #1663544
Lesenswert?

Lothar Miller schrieb:
> Was soll denn dann bei 10.321 herauskommen?
> 10.321-E009 oder 1.0321-E008

10.321-E009, also den technischen Expnenten.

eProfi schrieb:
> 1.0321-E009 ist aber was anderes als 1.0321 .
> Es ist 0,0000000010321
> d.h. Du musst 1.0321 noch durch 1000000000 (1.0e+9) teilen, um auf das
> gewünschte Ergebnis zu kommen.

Dies ist mir klar. Die ausgabe soll in Meter geschehen, intern habe ich 
aber den Wert auf nm. daher die schreibweise.

>
> Üblicherweise schreibt man nicht 1.0321-E009 , sondern 1.0321E-009 .
>

Ich meine es schon so. Mein Fehler, werde es in diesem Fall mit E-009 
realisieren.
#1663550
Lesenswert?

Ich würde es so angehen:

Die Zahl zunächst in den Bereich 0 bis 1000 normieren. Dabei mitzählen, 
wieviele 10-er Potenzen dazu notwendig waren. Da kommen dann noch 9 weg. 
Dann von dtostrf von der Basis die ASCII Darstellung berechnen lassen 
und den Exponenten selbst umwandeln und mittels strcat drannhängen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren