Name
STR{2}
Syntax
STR{2} (formattext, ausdruck[, intervall])
ausdruck, beliebiger numerischer Ausdruck
formattext = "%[flag][genauigkeit][stellen][.nachkommastellen][einheit]", Typ Text (1)
intervall, Typ Text
(1) Zusammensetzung und Wertebereiche der Bestandteile siehe STR()-Funktion.
[flag] (zusätzliches Flag ab Archicad 9):
˜: Nachkommaanteile mit dem Wert 0 (gerundet) werden nicht ausgegeben, auch wenn [.nachkommastellen]>0 angegeben ist. Siehe Beispiel 3.
[genauigkeit] Rundungsintervall ...
... für die nachfolgenden Ziffern nach der letzten [nachkommastelle]. Rückgabe des gerundeten Wertes als Text in intervall:
(Angabe der Intervallbreite / mögliche Ergebniswerte)
*0: Aus (intervall="", Standard)
*1: 0.5 ⇒ 0 .5
*2: 0.25 ⇒ 0 .25 .5 .75
*3: 0.1 ⇒ 0 .1 .2 .3 ... .9
*4: 0.01 ⇒ 0 .01 .02 ... .99
wobei der Rundungswert 0 nicht als Ziffer, sondern als Leerstring zurückgegeben wird.
... für den Ergebnisstring. Dann ist intervall="" (ab Archicad 9)
*0: 1 ⇒ 0 (intervall="") (Standard)
*5: 0.5 ⇒ .5
*6: 0.25 ⇒ .25 .5 .75
*7: nur bei Bruchzoll relevant (ab Archicad 21)
formattext = "%[flag][genauigkeit][stellen][.nachkommastellen][einheit]", Typ Text (1)
intervall, Typ Text
(1) Zusammensetzung und Wertebereiche der Bestandteile siehe STR()-Funktion.
[flag] (zusätzliches Flag ab Archicad 9):
˜: Nachkommaanteile mit dem Wert 0 (gerundet) werden nicht ausgegeben, auch wenn [.nachkommastellen]>0 angegeben ist. Siehe Beispiel 3.
[genauigkeit] Rundungsintervall ...
... für die nachfolgenden Ziffern nach der letzten [nachkommastelle]. Rückgabe des gerundeten Wertes als Text in intervall:
(Angabe der Intervallbreite / mögliche Ergebniswerte)
*0: Aus (intervall="", Standard)
*1: 0.5 ⇒ 0 .5
*2: 0.25 ⇒ 0 .25 .5 .75
*3: 0.1 ⇒ 0 .1 .2 .3 ... .9
*4: 0.01 ⇒ 0 .01 .02 ... .99
wobei der Rundungswert 0 nicht als Ziffer, sondern als Leerstring zurückgegeben wird.
... für den Ergebnisstring. Dann ist intervall="" (ab Archicad 9)
*0: 1 ⇒ 0 (intervall="") (Standard)
*5: 0.5 ⇒ .5
*6: 0.25 ⇒ .25 .5 .75
*7: nur bei Bruchzoll relevant (ab Archicad 21)
Entspricht vollständig der STR()-Funktion (2. Syntaxform) mit der Ergänzung um die Einstellung und ggf. Rückgabe der Rundungsintervalle mit intervall. Es gibt 2 Wirkungsweisen:
1. Mit den Genauigkeitsflags "*1" bis "*4" wird zusätzlich zu dem Ergebnisstring, der die Zahl in der Form [stellen][.nachkommastellen] enthält, in die Variable intervall ein Text übergeben, der die Fortsetzung der Zahl nach der letzten gewünschten Nachkommastelle beschreibt. Je nach Genauigkeit wird dies in bis zu 100 Rundungsintervallen angegeben. Wird auf 0 abgerundet, wird ein Leertext zurückgegeben. Dies entspricht der Exponentendarstellung von Maßkettenzahlen wie für Deutschland in der DIN 1356 gefordert.
Natürlich wird, sobald diese Darstellungsart im formattext enthalten ist, die letzte Nachkommastelle nicht mehr kaufmännisch gerundet. Sie ändert sich nur, wenn im letzten Intervall aufgerundet werden muss. Dafür wird die Rundung ja in intervall abgelegt.
2. Ab ArchiCAD 9 ist "*5" und "*6" als Rundungsoption hinzugekommen. Beide geben nie ein Ergebnis in intervall zurück, ändern aber die Rundungsgenauigkeit des Ergebnisstrings. Ist bei der STR()-Funktion die Rundung der letzten Stelle stets nur kaufmännisch (.5≤FRA(wert)<1: aufrunden, 0<FRA(wert)<.5 abrunden), kann dies nun auf 2 bzw. 4 Intervallschritte differenziert werden. Die letzte Stelle wird dann gemäß Rundungswert angepasst. Bei Verwendung von "*6" werden die letzten beiden (Nachkomma)stellen zur Rundung herangezogen und geändert. Siehe Beispiel 3. Der Unterschied Variante 1 besteht darin, dass zur Rundung nicht der Bereich nach dem Ende der Nachkommastellen, sondern davor betrachtet wird.
1. Mit den Genauigkeitsflags "*1" bis "*4" wird zusätzlich zu dem Ergebnisstring, der die Zahl in der Form [stellen][.nachkommastellen] enthält, in die Variable intervall ein Text übergeben, der die Fortsetzung der Zahl nach der letzten gewünschten Nachkommastelle beschreibt. Je nach Genauigkeit wird dies in bis zu 100 Rundungsintervallen angegeben. Wird auf 0 abgerundet, wird ein Leertext zurückgegeben. Dies entspricht der Exponentendarstellung von Maßkettenzahlen wie für Deutschland in der DIN 1356 gefordert.
Natürlich wird, sobald diese Darstellungsart im formattext enthalten ist, die letzte Nachkommastelle nicht mehr kaufmännisch gerundet. Sie ändert sich nur, wenn im letzten Intervall aufgerundet werden muss. Dafür wird die Rundung ja in intervall abgelegt.
2. Ab ArchiCAD 9 ist "*5" und "*6" als Rundungsoption hinzugekommen. Beide geben nie ein Ergebnis in intervall zurück, ändern aber die Rundungsgenauigkeit des Ergebnisstrings. Ist bei der STR()-Funktion die Rundung der letzten Stelle stets nur kaufmännisch (.5≤FRA(wert)<1: aufrunden, 0<FRA(wert)<.5 abrunden), kann dies nun auf 2 bzw. 4 Intervallschritte differenziert werden. Die letzte Stelle wird dann gemäß Rundungswert angepasst. Bei Verwendung von "*6" werden die letzten beiden (Nachkomma)stellen zur Rundung herangezogen und geändert. Siehe Beispiel 3. Der Unterschied Variante 1 besteht darin, dass zur Rundung nicht der Bereich nach dem Ende der Nachkommastellen, sondern davor betrachtet wird.
Beispiel 1:
zahl = 1.2738
! ––– Rundung in verschiedenen Intervallstufen:
string = STR{2}("%5.1",zahl,iv) !string=» 1,3«/iv=»«
string = STR{2}("%*05.1",zahl,iv) !string=» 1,3«/iv=»«
string = STR{2}("%*15.1",zahl,iv) !string=» 1,2«/iv=»5«
string = STR{2}("%*25.1",zahl,iv) !string=» 1,2«/iv=»75«
string = STR{2}("%*35.1",zahl,iv) !string=» 1,2«/iv=»7«
string = STR{2}("%*45.1",zahl,iv) !string=» 1,2«/iv=»74«
! ––– Graphische Ausgabe:
s=0.1*GLOB_SCALE/100 !Exponentenerhöhung
text2 0,0,string
text2 stw(string)/1000*GLOB_SCALE,s,iv
Erweiterte Rundung. intervall (hier die Variable "iv") gibt an, wie die Zahl nach der letzten Nachkommastelle "weitergeht".
Beispiel 2:
zahl = 1.2738
! Runden ohne Nachkommastellen
string=STR{2}("%8.0",zahl,iv) !string=» 1«/iv=»«
string=STR{2}("%*58.0",zahl,iv) !string=» 1,5«/iv=»«
string=STR{2}("%*68.0",zahl,iv) !string=» 1,25«/iv=»«
! Runden mit 1 Nachkommastelle
string=STR{2}("%8.1",zahl,iv) !string=» 1,3«/iv=»«
string=STR{2}("%*58.1",zahl,iv) !string=» 1,5«/iv=»«
string=STR{2}("%*68.1",zahl,iv) !string=» 1,275«/iv=»«
! Runden mit 2 Nachkommastellen
string=STR{2}("%8.2",zahl,iv) !string=» 1,27«/iv=»«
string=STR{2}("%*58.2",zahl,iv) !string=» 1,25«/iv=»«
string=STR{2}("%*68.2",zahl,iv) !string=» 1,25«/iv=»«
! Runden mit 3 Nachkommastellen
string=STR{2}("%8.3",zahl,iv) !string=» 1,274«/iv=»«
string=STR{2}("%*58.3",zahl,iv) !string=» 1,275«/iv=»«
string=STR{2}("%*68.3",zahl,iv) !string=» 1,275«/iv=»«
! Runden mit 4 Nachkommastellen
string=STR{2}("%8.4",zahl,iv) !string=» 1,2738«/iv=»«
string=STR{2}("%*58.4",zahl,iv) !string=» 1,2740«/iv=»«
string=STR{2}("%*68.4",zahl,iv) !string=» 1,2750«/iv=»«
Erweiterte Rundungsfunktionalität für den Ergebnisstring ab ArchiCAD 9. Die Mindestanzahl der Stellen erweitert sich dabei um 1 oder 2 Zeichen, wenngleich noch genügen Platz für die angefügten Stellen wäre.
Beispiel 3:
string=STR{2}("%8.2",25.0000,iv) !=» 25,00«
string=STR{2}("%˜8.2",25.0000,iv) !=» 25«
string=STR{2}("%8.2",25.0100,iv) !=» 25,01«
string=STR{2}("%˜8.2",25.0100,iv) !=» 25,01«
string=STR{2}("%˜8.2",25.0010,iv) !=» 25«
Bei Verwendung des Flags "˜" (tilde) werden 0-Werte der Nachkommaanteile weggelassen. Zu beachten ist auch hier wieder, dass dann aber (bis ArchiCAD 9) die Angabe von [stellen] nicht korrekt funktioniert. Es wird nur mit soviel Leerzeichen aufgefüllt, wie nötig wären, wenn der Nachkommaanteil ausgegeben würde.
zahl = 1.2738
! ––– Rundung in verschiedenen Intervallstufen:
string = STR{2}("%5.1",zahl,iv) !string=» 1,3«/iv=»«
string = STR{2}("%*05.1",zahl,iv) !string=» 1,3«/iv=»«
string = STR{2}("%*15.1",zahl,iv) !string=» 1,2«/iv=»5«
string = STR{2}("%*25.1",zahl,iv) !string=» 1,2«/iv=»75«
string = STR{2}("%*35.1",zahl,iv) !string=» 1,2«/iv=»7«
string = STR{2}("%*45.1",zahl,iv) !string=» 1,2«/iv=»74«
! ––– Graphische Ausgabe:
s=0.1*GLOB_SCALE/100 !Exponentenerhöhung
text2 0,0,string
text2 stw(string)/1000*GLOB_SCALE,s,iv
Erweiterte Rundung. intervall (hier die Variable "iv") gibt an, wie die Zahl nach der letzten Nachkommastelle "weitergeht".
Beispiel 2:
zahl = 1.2738
! Runden ohne Nachkommastellen
string=STR{2}("%8.0",zahl,iv) !string=» 1«/iv=»«
string=STR{2}("%*58.0",zahl,iv) !string=» 1,5«/iv=»«
string=STR{2}("%*68.0",zahl,iv) !string=» 1,25«/iv=»«
! Runden mit 1 Nachkommastelle
string=STR{2}("%8.1",zahl,iv) !string=» 1,3«/iv=»«
string=STR{2}("%*58.1",zahl,iv) !string=» 1,5«/iv=»«
string=STR{2}("%*68.1",zahl,iv) !string=» 1,275«/iv=»«
! Runden mit 2 Nachkommastellen
string=STR{2}("%8.2",zahl,iv) !string=» 1,27«/iv=»«
string=STR{2}("%*58.2",zahl,iv) !string=» 1,25«/iv=»«
string=STR{2}("%*68.2",zahl,iv) !string=» 1,25«/iv=»«
! Runden mit 3 Nachkommastellen
string=STR{2}("%8.3",zahl,iv) !string=» 1,274«/iv=»«
string=STR{2}("%*58.3",zahl,iv) !string=» 1,275«/iv=»«
string=STR{2}("%*68.3",zahl,iv) !string=» 1,275«/iv=»«
! Runden mit 4 Nachkommastellen
string=STR{2}("%8.4",zahl,iv) !string=» 1,2738«/iv=»«
string=STR{2}("%*58.4",zahl,iv) !string=» 1,2740«/iv=»«
string=STR{2}("%*68.4",zahl,iv) !string=» 1,2750«/iv=»«
Erweiterte Rundungsfunktionalität für den Ergebnisstring ab ArchiCAD 9. Die Mindestanzahl der Stellen erweitert sich dabei um 1 oder 2 Zeichen, wenngleich noch genügen Platz für die angefügten Stellen wäre.
Beispiel 3:
string=STR{2}("%8.2",25.0000,iv) !=» 25,00«
string=STR{2}("%˜8.2",25.0000,iv) !=» 25«
string=STR{2}("%8.2",25.0100,iv) !=» 25,01«
string=STR{2}("%˜8.2",25.0100,iv) !=» 25,01«
string=STR{2}("%˜8.2",25.0010,iv) !=» 25«
Bei Verwendung des Flags "˜" (tilde) werden 0-Werte der Nachkommaanteile weggelassen. Zu beachten ist auch hier wieder, dass dann aber (bis ArchiCAD 9) die Angabe von [stellen] nicht korrekt funktioniert. Es wird nur mit soviel Leerzeichen aufgefüllt, wie nötig wären, wenn der Nachkommaanteil ausgegeben würde.
Da der Formatierungsteil [genauigkeit] genau 2 Zeichen breit ist, ist es nicht nötig zum nachfolgenden Teil [stellen] ein Trennzeichen in den Formatierungsstring einzufügen. Es führt sogar mitunter zu Fehlern. Der GDL-Compiler kann also "%*34.2" in "%", [genauigkeit]="*3", [stellen]="4" und [nachkommastellen]=".2" trennen und erzeugt nicht fälschlicherweise einen 34 Zeichen breiten String.
ab 8.0