Returner en værdis heltal og decimalkomponenter

At dissekere en værdi lyder som en detaljeret handling, men i sandhed kan du bestemme en værdes heltal og decimalkomponenter med et par enkle udtryk - de er måske ikke de udtryk, du først vender dig til.

For at returnere en værdis heltalkomponent, bruger du sandsynligvis funktionen Int (). Denne funktion fungerer fint, så længe værdierne er positive. Kast en negativ værdi ind, og den fungerer ikke som forventet. Jeg brugte funktionen Int () i nedenstående ark og skyggede nogle uventede resultater.

Dette er ikke en fejl. Det er Int (), der fungerer som designet - for at afrunde et helt tal ned til det nærmeste heltal. Når et tal er negativt, kommer denne opførsel i vejen: afrunding -10.2 vender ikke tilbage -10, det vender tilbage -11. Når negative værdier er en mulighed, skal du bruge følgende udtryk:

=Int( cell ) + ( cell <0)

Den anden komponent i dette udtryk returnerer 1 eller 0 (sand eller falsk) for at imødekomme Int () 's afrundingsadfærd. For eksempel evalueres værdien -10.2 som følger:

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

= Int (-10, 2) + 1 =

-11 + 1 =

-10

Hvem kan skylde dig, hvis du går tabt på linjen -11 + 1. Husk, Int () runder en decimalværdi ned, ikke op.

Du får det samme problem, når du anvender din første bedste gæt til at returnere en værdets decimalkomponent. Mest sandsynligt vil du prøve

=Mod( cell, 1)

Det fungerer med positive værdier, men håndterer ikke negative værdier, som du kunne forvente. Funktionen Mod () udfører følgende ligning:

dividend – 1 * Int(dividend / divisor)

Lad os nu bruge denne formel til at evaluere -10.2 ved hjælp af det, vi lærte om Int () ovenfor:

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

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

-10, 2 - 1 * -11

-10, 2 - - 11

0, 8

Mod () fungerer korrekt, selvom det ikke returnerer de forventede resultater. Hvis der er nogen mulighed for, at du støder på en negativ værdi, skal du bruge følgende udtryk til at returnere en værdis decimalkomponent:

=Mod( cell, Sign( cell ))

Funktionen Sign () bestemmer et nummers tegn. Denne funktion returnerer 1, hvis tallet er positivt, -1 hvis tallet er negativt, og 0 hvis tallet er 0 (hvilket, som du måske formoder, kan forårsage problemer). Igen, lad os evaluere -10.2 ved hjælp af dette nye udtryk:

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

= Mod (-10, 2, -1)

-.2

Når den evaluerede værdi er et positivt tal, returnerer funktionen Tegn () 1, så den kan håndtere både negative og positive værdier. Hvad det ikke kan håndtere er 0. Når den værdi, du evaluerer, er 0, returnerer Sign () 0. Mod () kan ikke håndtere 0 som divisor, fordi du ikke kan dele med 0. Du ønsker indbyg en passende fejlbehandler til 0, f.eks

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

Som med de fleste fejlhåndtering dikterer dine data og forretningsregler din løsning.

© Copyright 2021 | pepebotifarra.com