float() vor div() für korrekte Dezimalstellen
Quizfrage
Was ergibt der Ausdruck div(75, 200)?
Auflösung
- A) 0, weil beide Werte ganze Zahlen sindRichtig. Bei zwei ganzen Zahlen rechnet div() ganzzahlig und schneidet die Nachkommastellen ab.
- B) 0.375, weil div() immer Dezimalzahlen liefertFalsch. Eine Dezimalzahl kommt erst heraus, wenn mindestens ein Wert eine Dezimalzahl ist, etwa nach float().
- C) Einen Fehler, weil 75 kleiner ist als 200Falsch. Ein kleinerer Dividend ist kein Fehler. Scheitern würde die Division nur am Teiler 0.
Worum es geht
Du berechnest einen Anteil aus zwei Zählungen und bekommst 0 statt 37.5. Der Grund: div() rechnet ganzzahlig, wenn beide Werte ganze Zahlen sind, und schneidet die Nachkommastellen ab. div(75, 200) ergibt deshalb 0, und mal 100 bleibt es 0. Sobald einer der beiden Werte eine Dezimalzahl ist, liefert div() eine Dezimalzahl. Am sichersten wandelst du beide Werte mit float() um. Für die Anzeige rundest du das Ergebnis mit formatNumber() auf zwei Stellen, daraus wird allerdings Text. Und schütze die Division mit if(), wenn der Teiler 0 sein kann, sonst scheitert die Aktion.
Der Ausdruck aus dem Tipp
div(float(a), float(b))Wann einsetzen, wann nicht
Einsetzen
Bei Prozenten, Anteilen und Durchschnitten aus Zählungen oder length().
Lieber nicht
Wenn du bewusst eine ganze Zahl willst. Dann ist die ganzzahlige Division richtig, div(7, 2) ergibt 3.
Häufigster Fehler
Das Ergebnis von formatNumber() weiterverrechnen. Es ist Text und muss erst mit float() zurück in eine Zahl.
Lizenz
Standard Läuft ohne Premium-Connector, also mit der Lizenz aus Microsoft 365. Beleg bei Microsoft Learn: Power Automate licensing FAQ. Für deinen ganzen Flow: Lizenz-Check.
Teilen
Kurzadresse: powerautomate.ninja/155
Quelle: PowerPlatformTip #155, Microsoft Learn: Reference for functions in workflow expressions.