| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Zahl formatieren? (2661 mal gelesen)
|
Einstein Mitglied Zerspanungsmechaniker-Drehtechnik
Beiträge: 94 Registriert: 20.02.2005
|
erstellt am: 03. Jan. 2006 15:51 <-- editieren / zitieren --> Unities abgeben:
Guten Tag Forum, ich hab wieder mal eine Frage: Mit dem Befehl „FormatNumber“ kann man eine Variable (nur Zahlen) formatieren und einstellen wie diese Variable angezeigt wird. Unter anderem findet man in dessen Syntax auch einen Ausdruck, der einstellt wie viele Stellen nach dem Komma angezeigt werden. Beispiel: „FormatNumber(Variable, 10, -1, , 0)”, die 10 stellt in diesem Beispiel 10 Nachkommastellen ein. Wenn aber nun die letzten Ziffern dieser Zahl „Nullen“ sind, wie kann ich diese dann ausblenden? Beispiel: Die Variable hätte den Wert „ .0545 “ dann würde der Befehl „FormatNumber(Variable, 10, -1, , 0)” den Wert „0.0545000000“ anzeigen. Kann man aber die überflüssigen Nullen am Ende der Zahl ausblenden? ------------------ MfG A. Einstein P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sterei Mitglied Student Vermessung Geoinformatik
Beiträge: 19 Registriert: 20.10.2005
|
erstellt am: 04. Jan. 2006 08:58 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Hab zufällig auch ein Problem warum funktioniert das nicht, bzw.wie geht es strHoehe = Str$(FormatNumber(dblhoehe, 3, -1, , 0)) wollte meine double Höhe in einen String umwandlen mit 3 Nachkommastellen. @Einstein Hätte einen rechtumständlichen Lösungsvorschlag Stelle fest an welche Stelle deiner Zahl die erste Null vorkommt. Dann prüfe was die nächste Stelle ist. Wenn eine Null dann prüfe weiter. wenn alle Stellen die danach kommen überprüft sind und es nur noch Nuller waren dann hast du ja deine Stellenanzahl die du dann statt deine 10 einsetzen kannst. Wenn nachder null noch eine andere Zahl kommt musst du halt ab der neuen Startposition mit der Überprüfung beginn. Hoffe es war hilfreich. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 04. Jan. 2006 12:24 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Hallo, @Einstein: ggf. hilft dir Round()?
Code:
?round(0.1234567000000,10) 0,1234567 ?round(0.123456789123456789,10) 0,1234567891
@sterei: also bei mir geht's zwar, wobei ich versteh' das Prob nicht ganz, Formatnumber() liefert doch so oder so nen String zurück. BTW, alternativ zu Str() könntest Du aber auch noch CStr() nehmen.
Code:
?formatnumber(1.23456789,3,-1,,0) 1,235 ?typename(formatnumber(1.23456789,3,-1,,0)) String
Gruss NancyEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goofy007 Mitglied Vermessungstechniker
Beiträge: 578 Registriert: 06.11.2004 Map3D 2018 und Civil3D 2018
|
erstellt am: 04. Jan. 2006 13:10 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
|
sterei Mitglied Student Vermessung Geoinformatik
Beiträge: 19 Registriert: 20.10.2005
|
erstellt am: 04. Jan. 2006 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
|
Einstein Mitglied Zerspanungsmechaniker-Drehtechnik
Beiträge: 94 Registriert: 20.02.2005
|
erstellt am: 04. Jan. 2006 16:47 <-- editieren / zitieren --> Unities abgeben:
Danke für die vielen Antworten! @startrek, der Vorschlag von dir is Gut, er funktioniert auch. Allerdings möchte ich die Zahl in einem Label anzeigen und aus diesem Grund sollte bei einer Zahl die kleiner als 1 ist, auch die führende Null angzeigt werden. Ich hab's auch schon mit einer IF probiert. Beispiel: If Zahl < 1 Then Label = "0" + Round(Zahl) Doch dabei steht in dem Label folgendes: "0 .05454", Wie entferne ich nun das Leerzeichen zwischen der "0" und dem "."? Hilfe! ------------------ MfG A. Einstein P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 04. Jan. 2006 19:40 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Abend Einstein, irgendwie werde ich das Gefühl nicht los, dass da was faul ist ... Ich weiss aber nicht was. Woher kommt denn deine Zahl? Ist's denn auch eine Zahl? Oder hast Du vielleicht irgendwo in Acad die führenden Nullen unterdrückt? Kann mir bloss nicht verstellen, dass das im VBE eine Rolle spielt, na however ...
Code:
'für mich, um die führende Null wegzukriegen ?formatnumber(0.123,10,0) ,1230000000'das passiert dann mit round() ?round(cdbl(formatnumber(0.123,10,0)),10) 0,123 'ohne round() ?cdbl(formatnumber(0.123,10,0)) 0,123
Eigentlich bastelst Du Dir aber einen String zusammen mit: If Zahl < 1 Then Label.caption?[?] = "0" + Round(Zahl, n Anzahl Digitsafter?) Zumindest verkettest Du da den String "0" mit Round(Zahl) ??? So ein Ergebnis wie Du hast, bekomm ich mit Round() gar nicht zustande, nur mit zwei Strings
Code:
?"0"+" .123" 0 .123'das Leerzeichen bekommst Du bei Strings mit Trim() weg ?"0"+trim(" .123") 0.123
Aber, ich schiess mal ein dickes Aber hinterher, dieses Konstrukt mit Trim halte ich für fragwürdig, zumal es ja um reine Numbers geht und nicht um Strings. Ich werd bloss irgendwie nicht so recht schlau draus, was Du eigentlich machst/machen willst?Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Einstein Mitglied Zerspanungsmechaniker-Drehtechnik
Beiträge: 94 Registriert: 20.02.2005
|
erstellt am: 04. Jan. 2006 20:23 <-- editieren / zitieren --> Unities abgeben:
Hallo startrek, ich habs jetzt endlich raus! Ich will dir nur noch schnell erklären was ich gemeint hab: Mein Tool soll die Masse von einem Volumenkörper berechnen. Die errechnete Masse soll in einem Label angezeigt werden wo neben der Masse auch noch folgender Text angezeigt werden soll: "Die Masse des Körpers berträgt: 0.1544kg". Ich hab das so programmiert:
Code:
Label8 = "Die Masse des Körpers berträgt: " + CStr(CDbl(FormatNumber(ErgebnisMasse, 10, 0))) + EinheitErgebnis
Das Proplem war, dass ich immer die Umwandlung der Zahl, in einen String, mit dem Befehl "Str" und nicht mit "CStr" machte. Aber nun klappt ja! ------------------ MfG A. Einstein
P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung! [Diese Nachricht wurde von Einstein am 04. Jan. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 05. Jan. 2006 10:59 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|