Gibt die Ganzzahl- und Dezimalkomponenten eines Werts zurück

Das Zerlegen eines Werts klingt nach einer detaillierten Operation, aber in Wahrheit können Sie die Ganzzahl- und Dezimalkomponenten eines Werts mit ein paar einfachen Ausdrücken bestimmen - dies sind möglicherweise nicht die Ausdrücke, an die Sie sich zuerst wenden.

Um die Ganzzahlkomponente eines Werts zurückzugeben, würden Sie wahrscheinlich die Funktion Int () verwenden. Diese Funktion funktioniert einwandfrei, solange die Werte positiv sind. Wenn Sie einen negativen Wert eingeben, funktioniert dies nicht wie erwartet. Ich habe die Int () - Funktion in dem unten gezeigten Blatt verwendet und einige unerwartete Ergebnisse schattiert.

Das ist kein Fehler. Int () funktioniert wie geplant - um eine Ganzzahl auf die nächste Ganzzahl abzurunden. Wenn eine Zahl negativ ist, stört dieses Verhalten: Das Abrunden von -10, 2 gibt nicht -10 zurück, sondern -11. Wenn negative Werte möglich sind, verwenden Sie den folgenden Ausdruck:

=Int( cell ) + ( cell <0)

Die zweite Komponente in diesem Ausdruck gibt 1 oder 0 (wahr oder falsch) zurück, um das Abrundungsverhalten von Int () zu berücksichtigen. Beispielsweise wird der Wert -10, 2 wie folgt ausgewertet:

= Int (-10, 2) + (-10, 2 <0) =

= Int (-10, 2) + 1 =

-11 + 1 =

-10

Wer könnte Ihnen die Schuld geben, wenn Sie sich bei der -11 + 1-Linie etwas verlaufen? Denken Sie daran, Int () rundet einen Dezimalwert nach unten und nicht nach oben.

Sie werden auf dasselbe Problem stoßen, wenn Sie Ihre erste bestmögliche Vermutung anwenden, um die Dezimalkomponente eines Werts zurückzugeben. Höchstwahrscheinlich werden Sie es versuchen

=Mod( cell, 1)

Es funktioniert mit positiven Werten, behandelt jedoch nicht wie erwartet negative Werte. Die Mod () - Funktion führt die folgende Gleichung aus:

dividend – 1 * Int(dividend / divisor)

Verwenden wir nun diese Formel, um -10, 2 anhand der obigen Informationen zu Int () zu bewerten:

-10, 2 - 1 * Int (-10, 2 / 1)

-10, 2 - 1 * Int (-10, 2)

-10, 2 - 1 * -11

-10, 2 - - 11

.8

Mod () funktioniert korrekt, auch wenn es nicht die erwarteten Ergebnisse zurückgibt. Wenn die Möglichkeit besteht, dass Sie auf einen negativen Wert stoßen, verwenden Sie den folgenden Ausdruck, um die Dezimalkomponente eines Werts zurückzugeben:

=Mod( cell, Sign( cell ))

Die Sign () -Funktion bestimmt das Vorzeichen einer Zahl. Diese Funktion gibt 1 zurück, wenn die Zahl positiv ist, -1, wenn die Zahl negativ ist, und 0, wenn die Zahl 0 ist (was, wie Sie vielleicht vermuten, Probleme verursachen kann). Lassen Sie uns noch einmal -10, 2 mit diesem neuen Ausdruck auswerten:

= Mod (-10, 2, Vorzeichen (-10, 2)

= Mod (-10, 2, -1)

-.2

Wenn der ausgewertete Wert eine positive Zahl ist, gibt die Sign () - Funktion 1 zurück, sodass sowohl negative als auch positive Werte verarbeitet werden können. Was es nicht verarbeiten kann, ist 0. Wenn der Wert, den Sie auswerten, 0 ist, gibt Sign () 0 zurück. Mod () kann 0 nicht als Divisor verarbeiten, da Sie nicht durch 0 dividieren können Bauen Sie einen geeigneten Fehlerhandler für 0 ein, z

= IF ( Zelle = 0, 0, MOD ( Zelle, SIGN ( Zelle )))

Wie bei den meisten Fehlerbehandlungen bestimmen Ihre Daten und Geschäftsregeln Ihre Lösung.

© Copyright 2020 | mobilegn.com