Technik suchen

  • Gelber Gürtel
  • Standard
  • Tipp 155

float() vor div() für korrekte Dezimalstellen

Quizfrage

Was ergibt der Ausdruck div(75, 200)?

Auflösung

  1. A) 0, weil beide Werte ganze Zahlen sindRichtig. Bei zwei ganzen Zahlen rechnet div() ganzzahlig und schneidet die Nachkommastellen ab.
  2. B) 0.375, weil div() immer Dezimalzahlen liefertFalsch. Eine Dezimalzahl kommt erst heraus, wenn mindestens ein Wert eine Dezimalzahl ist, etwa nach float().
  3. 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.

Ganzer Tipp mit Screenshots auf powerplatformtip.comPowerPlatformTip #155, auf Englisch

Teilen

Kurzadresse: powerautomate.ninja/155

Quelle: PowerPlatformTip #155, Microsoft Learn: Reference for functions in workflow expressions.