Hallo liebe mikrocontroller Gemeinde, ich wollte euch kurz um eure hilfe bitten. Ich möchte gerne Float mit e^6 benutzen, egal was eingegeben wird. Ich lese derzeit eine Textbox aus und Convertiere sie mit (float)Convert.ToDouble() zu meiner float variablen. Wenn ich 45000000 eingebe möchte ich 45,0E+06 haben oder bei 45111000 möchte ich 45,111E+06 haben. Derzeit habe ich bei 45000000 ->4,5E+07 Wie kann ich dem Float meine formatierung vorgeben oder das problem anders lösen? liebe grüße und vielen dank im vorraus
Warum brauchst du diese Formatierung. Float ist doch so festgelegt, das es vor dem , nur 1 stelle gibt. 4,5E+07 ist damit richtig. Die fehlenden nachkomme stellen werde schon vorhanden sein, nur werden sich nicht mit angezeigt.
Achso ich brauche die Formatierung so, weil ich die Eingaben in MHz machen muss. Es können aber auch eingaben in MHz sein die bis auf Hz genau deklariert sind.
Frank K. schrieb: > Achso ich brauche die Formatierung so, weil ich die Eingaben in MHz > machen muss. Es können aber auch eingaben in MHz sein die bis auf Hz > genau deklariert sind. für die eingabe ist es doch egal. Es ist doch nur die Darstellung. Wandle es doch mal in ein int um, dann müsste alles stellen da sein.
Frank K. schrieb: > Ich lese derzeit eine Textbox aus Meine Controller (du hast ja die "Mikrocontrollergemeinde" angesprochen) haben keine Textboxen. Vielleicht erzählst du ja vorab, in welcher Programmierumgebung du da gerade arbeitest …
Achso entschudigt bitte, ich arbeite mit c# an ein paar windowsforms @Peter II (Gast) es geht nicht um die genauigkeit, es sind alle stellen da. Es geht nur darum das ich e^6 haben möchte, da es in MHz angegeben werden soll
:
Bearbeitet durch User
Du dividierst einfach die Zahl durch 1e6, zeigst das Ergebnis als Float ohne Exponent an (wie auch immer das in C# geht, aber irgendwie gehen tut es sicher) und schreibst anschließend den String "E+06" (oder besser " MHz") dahinter.
Frank K. schrieb: > Es geht nur darum das ich e^6 haben möchte, da es in MHz angegeben > werden soll dann sag das doch. schau dir mal den Formator bei toString an. http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#RFormatString wert.ToString("E06") könnte eventuell gehen.
Nachtrag: http://msdn.microsoft.com/en-us/library/shxtf045.aspx das ist bestimmt was passendes dabei.
Ja das man das machen kann ist mir schon klar xD, ich wolltedas aber gerne etwas "sauberer" erleigen. Ich kann auch einfach ein paar buttons für Hz KHz und MHz und das dann dividieren und multiplizieren, so dasss es passt. Naja meine frage ist halt ob man das Floarformat ändern kann. Bei Sting kann man auch die Werte Formatieren mit string.Formal(0:00,000000) <--oder so ähnlich ^^
Vilt. noch wichtig zu erwähnen. Die Eingabe und die Augabe läuft über die gleich textbox und wird dann auf float geschrieben. Und die Box reagiert auf textchange. Jetzt hatte ich grade die Idee das ivent zu wechseln, dann ist das problem vilt schon gelöst
:
Bearbeitet durch User
Ja das Problem ist im Prinziep gelösst. Sollte jemmand aber ne idee haben die ich das Floatformat ändern kann, dann bitte noch melden.
Frank K. schrieb: > Ja das Problem ist im Prinziep gelösst. Sollte jemmand aber ne idee > haben die ich das Floatformat ändern kann, dann bitte noch melden. hast du dir mal den link zu den format parametern angeschaut? Teste doch mal "E06".
Peter II schrieb: > Teste doch mal "E06". Die Zahl nach dem 'E' gibt doch die Anzahl der Nachkommastellen der Mantisse an. Die Größe des Exponents bleibt davon unberührt. "Exactly one digit always precedes the decimal point." Daran lässt sich wohl nichts ändern.
Yalu X. schrieb: > Die Zahl nach dem 'E' gibt doch die Anzahl der Nachkommastellen der > Mantisse an. Die Größe des Exponents bleibt davon unberührt. müsste da nicht beides gehen [sign]integral-digits[.[fractional-digits]][e[sign]exponential-digits]
Frank K. schrieb: > Ja das Problem ist im Prinziep gelösst. Sollte jemmand aber ne idee > haben die ich das Floatformat ändern kann, dann bitte noch melden. ToString("0,,.000000") zwar ohne E+06, teilt aber die Zahl vor der Umwandlung durch eine Million http://msdn.microsoft.com/en-us/library/0c899ak8.aspx#SpecifierTh
Es gibt die Format anweisung : Format(" % 6.3f",[frequenz/1E6]); und die besagt fixed point, 6 stellen, davon 3 hinter dem Komma. Und der Parameter als Megahertz.
Hi, irgendwie klappt das nicht. Ich habe das jetzt so eingebaut und wie gesagt, ich bekomme dabei ne Fehlermeldung das andere zeichen erwartet werden. rTB_test.Text = string.Format(" % 6.3f",[formatbuffer/1E6]);
Das ist ja auch völlig falsch. Lies dir mal die Anleitung zu string.Format durch. Flash Gordon meinte wahrscheinlich folgendes:
1 | rTB_test.Text = string.Format("{0:##.###}", value/1e6); |
Hmm okay so komme ich auf MHz das war schon gut. Jetzt habe ich aber string.Format("{0:00e+0}",Wert) genutzt um eine Wissenschaftliche eingabe zu machen. vielen dank =)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.