Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 2 von 2

Thema: String Format Expotentialschreibweise

  1. #1
    Registriert seit
    19.12.2006
    Beiträge
    185
    Danke
    25
    Erhielt 26 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich suche nach einer Lösung zur Formatierung eines LREAL nach String in Expotentialschreibweise, wie

    Code:
    printf("%5E",5000.1234) // Ausgabe 5.000123+003
    In der Beckhoff Utilities.lib finde ich den FB_FormatString, quasi genau was ich suche, allerdings wird der Typ E nicht unterstützt.
    (Not implemented. Reserved for future use!.)

    Hat das mal jemand zu Fuß programmiert und kann einen Denkanstoß geben ?


    Gruß
    Zitieren Zitieren String Format Expotentialschreibweise  

  2. #2
    mkd ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.12.2006
    Beiträge
    185
    Danke
    25
    Erhielt 26 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Läuft jetzt...

    Hier ein Auszug als Ansatz


    Code:
     
    
    IF (...) THEN
     (*Eine Stelle vorm Punkt*)
     (*erste Stelle ist 0 => mit 10 multiplizieren*)
     WHILE(  (STRING_TO_INT(LEFT(sTemp,1)) = 0) AND NOT (lrTemp=0) ) DO
      lrTemp:=lrTemp*10;
      sTemp:=LREAL_TO_FMTSTR(lrTemp,16,TRUE);
      iExponent:=iExponent+1;
     END_WHILE
     
     sTemp:=LREAL_TO_FMTSTR(lrTemp,iWidth,TRUE);      (*auf vorgegebene Anzahl Nachkommastellen Runden*)
     IF (iExponent=0) THEN sTemp:=CONCAT(sTemp,'E+'); ELSE sTemp:=CONCAT(sTemp,'E-'); END_IF
     sTemp:=CONCAT(sTemp,FC_FIX(INT_TO_STRING(iExponent),3, 16#30 , 0)); (*auf drei Stellen mit Nullen füllen*)
    
    ELSE
     (*mehrere Stellen vorm Punkt*)
     WHILE ( STRING_TO_INT(LEFT(sTemp,2)) > 9) DO
      lrTemp:=lrTemp/10;
      sTemp:=LREAL_TO_FMTSTR(lrTemp,16,TRUE);
      iExponent:=iExponent+1;
     END_WHILE
     
     sTemp:=LREAL_TO_FMTSTR(lrTemp,iWidth,TRUE);      (*auf vorgegebene Anzahl Nachkommastellen Runden*)
     sTemp:=CONCAT(sTemp,'E+');
     sTemp:=CONCAT(sTemp,FC_FIX(INT_TO_STRING(iExponent),3, 16#30 , 0)); (*auf drei Stellen mit Nullen füllen*)
    END_IF

Ähnliche Themen

  1. Hilfe zu String Format
    Von SteffenD im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 03.07.2012, 11:12
  2. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  3. Int na. String und String zusammensetzen
    Von bastler im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 09.11.2008, 20:29
  4. Ein String kopieren in einen anderen String
    Von CanYouHelpMe im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.09.2008, 17:21
  5. STRING Format
    Von feeli im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 01.12.2006, 13:58

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •