0

Runden auf zwei Nachkommastellen

Hallo zusammen, wie rundet man auf zwei Nachkommastellen?

Folgender Code habe ich erstellt und soweit funktioniert es auch, siehe unten. Leider übernimmt es als stylend Text das Zahlenformat nicht nicht aus dem Funktionsfeld. 

let Ausbeute := 100 / Auftragsmenge * 'Menge erstellt';
styled(text(Ausbeute), "", if Ausbeute <= 90 then "red" else "green" end, "");
styled(text(Ausbeute), "", if Ausbeute >= 110 then "red" else "green" end, "")

Das Ergebnis: 97,73094246621908

Danke für Eure Hilfe.

14 Antworten

null
    • Wegener & Hinz GmbH
    • green_cup
    • vor 2 Jahren
    • Gemeldet - anzeigen

    ich nutze folgende globale Funktion um kaufmännisch auf 2 Stellen zu runden:

    function kauffRund(Wert : number) do
        let sgn := 0;
        let ergebnis := 0;
        if Wert > 0 then
            sgn := 1
        else
            if Wert < 0 then sgn := -1 end
        end;
        let zergebnis1 := sgn * floor(abs(Wert) * 100 + 0.5);
        let zergebnis2 := 100;
        ergebnis := zergebnis1 / zergebnis2;
        ergebnis
    end;

     

    Vielleicht hilft das ja weiter 

    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

      Zum Runden gibt es die Funktion round():

    let Ausbeute := round(100 / Auftragsmenge * 'Menge erstellt', 2);
    
    • rainless
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Wenn das Ergebnis an sich nicht verändert, aber nur die Ausgabe gerundet werden soll, dann kann man auch mit

    format(Ausbeute, "0.00")
    

    das gewünschte Ergebnis anzeigen lassen. Die "0.00" sorgt dafür, dass nur zwei Ziffern hinter dem Komma kommen - sauber auf- bzw. abgerundet.

    • Stephan_S
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Danke für Eure Tipps 😊. Nun ist mir aufgefallen, dass meine Bedingte Formatierung 

    styled(text(Ausbeute), if Ausbeute <= 90 then "red" else "green" end, "");
    styled(text(Ausbeute), if Ausbeute >= 110 then "red" else "green" end, "")

    nicht funktioniert. Irgendwie logisch nur wie macht man es richtig?

    Ich möchte alles zwischen >= 90 und <= 110 grün und alles ausserhalb rot. 
     

    Danke bereits im Voraus.

    • rainless
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Wie wäre es mit 

    let colour := "red";
    if Ausbeute >= 90 or Ausbeute <= 110 then colour := "green" end;
    styled(string(Ausbeute), colour);

    --> Hintergrund farbig ... wenn der Text farbig sein soll, dann 

    styled(string(Ausbeute), "", colour, "");
    
      • Stephan_S
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Lars danke für die Hilfe. Ich glaube ich habe es so gemacht wie von Dir empfohlen. Leider werden aber alle Werte über 110 trotzdem noch grün angezeigt. Ich finde nicht heraus warum. Hier einmal den Code den ich verwende:

       

      let Ausbeute := round(100 / Auftragsmenge * 'Menge erstellt', 2);
      let colour := "red";
      if Ausbeute >= 90 or <= 110 then
          colour := "green"
      end;
      styled(string(Ausbeute), colour)
      

      Vielleicht sieht ja jemand was ich hier falsch mache.

      Danke und Gruss 

    • Tacho
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Du hast zumindest den Feldbezug auf Ausbeute hinter dem "or" weggelassen.

    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen
    let Ausbeute := round(100 / Auftragsmenge * 'Menge erstellt', 2);
    let colour := "red";
    if Ausbeute >= 90 and Ausbeute <= 110 then
        colour := "green"
    end;
    styled(string(Ausbeute), colour)
    

    Vielleicht so. Das if-Statement ist nicht ganz korrekt.

    • Stephan_S
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Danke nun klappt es 🙂. Jetzt ist es mir auch offensichtlich warum es am Anfang nicht funktionieren wollte. Danke Euch vielmals.

    • Stephan_S
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo zusammen, es gibt eine weitere Bedingung die bei der Ausbeute berücksichtigt werden muss. Ich versuche die Bedingung hier einmal dazulegen.

    Der aktuelle Code ist nun so wie von Mirko vorgeschlagen, funktioniert.

    let Ausbeute := round(100 / Auftragsmenge * 'Menge erstellt', 2);
    let colour := "red";
    if Ausbeute >= 90 and Ausbeute <= 110 then
        colour := "green"
    end;
    styled(string(Ausbeute), colour)
    
    

    Nun muss ich aber bei der Ausbeute die Auftragsmenge neu berücksichtigen. Liegt die Auftragsmenge bei <= 3000 darf die Ausbeute zwischen >= 90 and <= 110 liegen. Liegt die Auftragsmenge bei >= 3000, darf die Ausbeute zwischen >=95 and <= 105 liegen. Alles ausserhalb der beiden Ausbeute-Bedingungen wäre dann "rot". 

    Kann mir netterweise nochmals jemand behilflich sein und mir einen Vorschlag machen, wie der Code aussehen muss.

    Ich habe bereits einige Selbstversuche unternommen, leider ohne funktionierendem Ergebnis :-(. 

    Danke. Ich freue mich auf Eure Ideen.

      • Ninox-Professional
      • planoxpro
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Ich würde es so versuchen:

      let Ausbeute := round(100 / Auftragsmenge * 'Menge erstellt', 2);
      let colour := "red";
      if Auftragsmenge <= 3000 then
          if Ausbeute >= 90 and Ausbeute <= 110 then
              colour := "green"
          end
      else
          if Ausbeute >= 95 and Ausbeute <= 105 then
              colour := "green"
          end
      end;
      styled(string(Ausbeute), colour)
      
      • rainless
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Stephan Stucki Du musst Dich wegen der 3000 noch entscheiden. Im Moment hast du sowohl >= als auch <= gesagt. Damit ist =3000 nicht eindeutig definiert. planox.pro hat sich entschieden die =3000 in die 90-110-Gruppe zu nehmen. Aber das musst Du am Ende wissen.

      • Stephan_S
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Lars allerdings! Die Gruppe 90-110 würde aber passen. Ich teste es sobald ich dazu komme. Danke für die Unterstützung.

      • Stephan_S
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro danke. Ich teste es gerne 🙂

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 14Antworten
  • 446Ansichten
  • 5 Folge bereits