Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Zahl formatieren?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von Einstein an!   Senden Sie eine Private Message an Einstein  Schreiben Sie einen Gästebucheintrag für Einstein

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 03. Jan. 2006 15:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von sterei an!   Senden Sie eine Private Message an sterei  Schreiben Sie einen Gästebucheintrag für sterei

Beiträge: 19
Registriert: 20.10.2005

erstellt am: 04. Jan. 2006 08:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 04. Jan. 2006 12:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

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.
BTWBy the way (So nebenbei bemerkt), 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 Nancy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Goofy007
Mitglied
Vermessungstechniker


Sehen Sie sich das Profil von Goofy007 an!   Senden Sie eine Private Message an Goofy007  Schreiben Sie einen Gästebucheintrag für Goofy007

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 04. Jan. 2006 13:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

Hallo Einstein,

wie wäre es wenn du dein FormatNumber ersetzt durch

Code:
format(Variable, "0,##########")
?

mfg didi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

sterei
Mitglied
Student Vermessung Geoinformatik


Sehen Sie sich das Profil von sterei an!   Senden Sie eine Private Message an sterei  Schreiben Sie einen Gästebucheintrag für sterei

Beiträge: 19
Registriert: 20.10.2005

erstellt am: 04. Jan. 2006 15:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

@startrek
danke

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Einstein
Mitglied
Zerspanungsmechaniker-Drehtechnik


Sehen Sie sich das Profil von Einstein an!   Senden Sie eine Private Message an Einstein  Schreiben Sie einen Gästebucheintrag für Einstein

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 04. Jan. 2006 16:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 04. Jan. 2006 19:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Einstein an!   Senden Sie eine Private Message an Einstein  Schreiben Sie einen Gästebucheintrag für Einstein

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 04. Jan. 2006 20:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

Hallo Einstein,

ein paar Beiträge unter deinem war schon eine Lösung.

http://ww3.cad.de/foren/ubb/Forum259/HTML/000806.shtml#000002

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz