Returner en verdis heltall- og desimalkomponenter

Å dissekere en verdi høres ut som en detaljert operasjon, men i sannhet kan du bestemme en verdis heltall- og desimalkomponenter med noen få enkle uttrykk - de er kanskje ikke uttrykkene du først vender deg til.

For å returnere en verdis heltallskomponent, vil du sannsynligvis bruke Int () -funksjonen. Denne funksjonen fungerer bra så lenge verdiene er positive. Kast inn en negativ verdi, og det fungerer ikke som forventet. Jeg brukte Int () -funksjonen i arket som er vist nedenfor og skygget for noen uventede resultater.

Dette er ikke en feil. Det er Int () som fungerer som designet - for å runde et heltall ned til nærmeste heltall. Når et tall er negativt, kommer den oppførselen i veien: Avrunding -10.2 returnerer ikke -10, den returnerer -11. Når negative verdier er en mulighet, bruk følgende uttrykk:

=Int( cell ) + ( cell <0)

Den andre komponenten i dette uttrykket returnerer 1 eller 0 (sant eller usant) for å imøtekomme Int () sin avrundingsadferd. For eksempel evaluerer verdien -10.2 som følger:

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

= Int (-10, 2) + 1 =

-11 + 1 =

-10

Hvem kan klandre deg hvis du blir borte på linjen -11 + 1. Husk at Int () runder en desimalverdi ned, ikke opp.

Du vil støte på det samme problemet når du bruker ditt første beste gjetning for å returnere en verdis desimalkomponent. Mest sannsynlig vil du prøve

=Mod( cell, 1)

Det fungerer med positive verdier, men håndterer ikke negative verdier som du kanskje forventer. Mod () -funksjonen utfører følgende ligning:

dividend – 1 * Int(dividend / divisor)

La oss nå bruke denne formelen til å evaluere -10.2 ved å bruke 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 riktig, selv om det ikke returnerer resultatene du forventet. Hvis det er noen mulighet for at du vil møte en negativ verdi, kan du bruke følgende uttrykk for å returnere desimalkomponenten til en verdi:

=Mod( cell, Sign( cell ))

Funksjonen Sign () bestemmer et talls tegn. Denne funksjonen returnerer 1 hvis tallet er positivt, -1 hvis tallet er negativt, og 0 hvis tallet er 0 (som, som du kanskje tror, ​​kan forårsake problemer). La oss igjen evaluere -10.2 ved hjelp av dette nye uttrykket:

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

Mod = (-10, 2, -1)

-.2

Når den evaluerte verdien er et positivt tall, returnerer Sign () -funksjonen 1, slik at den kan håndtere både negative og positive verdier. Det den ikke kan takle er 0. Når verdien du evaluerer er 0, returnerer Sign () 0. Mod () kan ikke håndtere 0 som divisor fordi du ikke kan dele med 0. Du vil bygg inn en passende feilbehandler for 0, for eksempel

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

Som med mest feilhåndtering, vil dine data og forretningsregler diktere løsningen din.

© Copyright 2020 | mobilegn.com