Flyttalls Mantissa Eksponent Binære Alternativer
Floating Point Representation Basics. Det er innlegg om representasjon av flytpunktformat. Formålet med denne artikkelen er å gi en kort introduksjon til flytpunktformatet. Følgende beskrivelse forklarer terminologi og primære detaljer om binær flytpunktsrepresentasjon i IEEE 754 Diskusjonen begrenser seg til singel og dobbelt presisjonsformater. Normalt vil et ekte tall i binær representeres i følgende format. Hvor jeg m og Fn vil være henholdsvis 0 eller 1 av heltall og brøkdeler. Et endelig nummer kan også representeres av fire heltallskomponenter, et tegn s, en base b, en significand m og en eksponent e Deretter blir tallverdien av tallet vurdert som. -1 sxmxbe Hvor m b. Avhengig av base og antall biter som brukes til å kode for forskjellige komponenter, definerer IEEE 754-standarden fem grunnleggende formater. Blant de fem formatene er binary32 og binary64 formater henholdsvis enkelt presisjon og dobbel presisjonsformater hvor basen er 2.Table 1 Precision Representation. Single Precision Format. Som nevnt i tabell 1 har det enkle presisjonsformatet 23 bits for significand 1 representerer implisitt bit, detaljer nedenfor, 8 bits for eksponent og 1 bit for sign. For eksempel rasjonelt tall 9 2 kan konverteres til enkeltpresjonsflotformat som følger. Resultatet sies å bli normalisert hvis det er representert med ledende 1 bit, det vil si 1 001 2 x 2 2 Tilsvarende når tallet 0 000000001101 2 x 2 3 er normalisert, det ser ut som 1 101 2 x 2 -6 Utelatelse av denne underforståtte 1 på venstre ekstreme gir oss mantissen av float nummer Et normalisert tall gir mer nøyaktighet enn tilsvarende de-normalisert nummer Den underforståtte mest signifikante bit kan brukes til å representere enda mer nøyaktig significand 23 1 24 bits som kalles subnorm representasjon. Flytpunktstallene skal representeres i normalisert form. De subnormale tallene faller inn i kategorien av normaliserte tall. Den subnormale representasjonen reduserer eksponentområdet og kan ikke normaliseres siden det ville resultere i en eksponent som ikke passer inn i feltet. Subnormale tall er mindre nøyaktige, dvs. de har mindre plass til ikke-nullbiter i brøkfeltet enn normaliserte tall. Faktisk faller nøyaktigheten som størrelsen på subnormal reduksjon av antall Imidlertid er den subnormale representasjonen nyttig ved arkivering av hull i flytende punkts skala nær null. Med andre ord kan resultatet ovenfor skrives som -1 0 x 1 001 2 x 2 2 som gir integerkomponentene som s 0, b 2, significand m 1 001, mantissa 001 og e 2 Det korresponderende enkelt-presisjon flytende tallet kan representeres i binær som vist nedenfor. Hvor eksponentfeltet skal være 2 , men likevel kodet som 129 127 2 kalt partisk eksponent Eksponentfeltet er i vanlig binært format, som også representerer negative eksponenter med en kodende lik signaturstørrelse, 1 s kompliment, 2 s komplement, osv. Den partisk eksponenten brukes til representasjon av negative eksponenter. partisk eksponent har fordeler i forhold til andre negative representasjoner ved å utføre bitvis sammenligning av to flytpunktstall for likestilling. En forspenning av 2 n-1 1, hvor n er bitene som brukes i eksponenten, blir lagt til eksponenten e for å få partisk eksponent E så , kan den forspente eksponenten E for enkeltpresifikasjonsnummer oppnås som. Eksponeringsområdet i enkelt presisjonsformat er -126 til 127 Andre verdier brukes til spesielle symboler. Merknad Når vi pakker ut et flytpunktspunkt, blir eksponenten oppnådd forspent eksponent Subtrahering 127 fra den forspenne eksponenten kan vi trekke ut objektiv eksponent. Følgende figur representerer flytpunkts skala. Dobbelt presisjonsformat. Som nevnt i tabell 1, dannes det dobbelte presisjonsformatet har 52 biter for significand 1 representerer implisitt bit, 10 biter for eksponent og 1 bit for sign Alle andre definisjoner er de samme for dobbelt presisjonsformat, unntatt størrelsen på ulike komponenter. Den minste endringen som kan representeres i flytpunktsrepresentasjon kalles som presisjon Fraksjonaldelen av et presisjonsnormalisert nummer har nøyaktig 23 biter oppløsning, 24 biter med den underforståtte biten Dette tilsvarer loggen 10 2 23 6 924 7 Karakteristikken for logaritmenes desimalfigurer for nøyaktighet Tilsvarende, i tilfelle med dobbelte presisjonstall presisjonen er logg 10 2 52 15 654 16 desimale sifre. Sikkerhet i flytpunktsrepresentasjon styres av antall significand bits, mens rekkevidde er begrenset av eksponent. Ikke alle reelle tall kan nøyaktig representeres i flytpunktsformat For ethvert nummer som ikke er flytende punktnummer, det er to alternativer for flytpunkts-tilnærming, si nærmeste flytpunktsnummer mindre enn x som x og nærmeste floati ng punktnummer større enn x som x En avrundingsoperasjon utføres på antall signifikante biter i mantissa-feltet basert på valgt modus. Den runde nedmodusen forårsaker x sett til x, og den runde opp modusen gir x sett til x, runden mot nullmodus forårsaker x er enten x eller x avhengig av hvilken som er mellom null og runden til nærmeste modus sett x til x eller x som er nærmest x Vanligvis rundt til nærmeste er mest brukt modus Nærheten til flytpunktsrepresentasjon til den faktiske verdien kalles som nøyaktighet. Spesielle bitmønstre. Standarden definerer noen spesielle flytende punktbitmønstre. Null kan ikke ha mest signifikante 1 bit, derfor kan ikke normaliseres. Den skjulte bitrepresentasjonen krever en spesiell teknikk for lagring av null. Vi vil ha to forskjellige bitmønstre 0 og -0 for samme numeriske verdi null For enkel presisjon flytpunktsrepresentasjon, er disse mønstrene gitt under.0 00000000 00000000000000000000000 0.1 00000000 00000000000000000000000 -0.Similarly, standarden representerer to forskjellige bit patters for INF og - INF Det samme er gitt nedenfor. 0 11111111 00000000000000000000000 INF.1 11111111 00000000000000000000000 - INF. Alle av disse spesielle tallene, samt andre spesielle tall nedenfor, er subnormale tall representert ved bruk av en spesielt bitmønster i eksponentfeltet Dette reduserer eksponentområdet litt, men dette er ganske akseptabelt siden rekkevidden er så stor. Et forsøk på å beregne uttrykk som 0 x INF, 0 INF, etc, gir ingen matematisk forstand. Standarden kalles resultatet av slike uttrykk som Ikke et nummer NaN Eventuelt etterfølgende uttrykk med NaN gir NaN Representasjonen av NaN har ikke-null significand og alle 1s i eksponentfeltet. Disse er vist nedenfor for enkelt presisjonsformat x er ikke omhyggelig bits. x 11111111 1 m 0000000000000000000000 . Hvor m kan være 0 eller 1 Dette gir oss to forskjellige representasjoner av NaN.0 11111111 110000000000000000000000 Signaling NaN SNaN.0 11111111 100000000000000000000000 Stille NaN QNaN. U sually QNaN og SNaN brukes til feilhåndtering QNaN opphever ikke noen unntak når de forplanter seg gjennom de fleste operasjoner Mens SNaN er hvilke som forbrukes av de fleste operasjoner vil gi et ugyldig unntak. Overflow og Underflow. Overflow sies å skje når det sanne resultatet av en aritmetisk operasjon er endelig men større i størrelsesorden enn det største flytpunktspunktet som kan lagres ved hjelp av den angitte presisjonen Understrømning sies å skje når det sanne resultatet av en aritmetisk operasjon er mindre i størrelsen uendelig enn det minste normaliserte flytpunktspunktet som kan lagres Overflow kan ikke ignoreres i beregninger, mens understrøm effektivt kan erstattes med null. IEEE 754-standarden definerer et binært flytpunktsformat Arkitekturdetaljer blir overlatt til maskinvareprodusentene Lagringsordren til individuelle byte i binær flytpunktspunkt varierer fra arkitektur til arkitektur. Takk til Venki for å skrive den ovennevnte artikkelen Vennligst skriv te kommenterer hvis du finner noe feil, eller du vil dele mer informasjon om emnet som er omtalt ovenfor. Advansert Binary. Før du leser for mye i mellomliggende avanserte eller master opplæringsprogrammer, må du se på det grunnleggende om binær Hvis du ikke, det kan forårsake forvirring. Det avanserte binære konseptet, flytpunkter er en del av programmeringen helt siden begynnelsen, men hvordan oversetter maskinen desimaltall i maskinskode. I denne veiledningen vil jeg forklare hva flytpunktsystemet er, hvordan det brukes og hvordan en datamaskin oversetter et desimalnummer til binært. Overflatepoeng brukes i det meste hvert enkelt program eller programmeringsspråk, det er en av de mest nøyaktige og effektive måtene å lagre decimaler. Etter denne opplæringen vil du kunne forstå hva en flytende punkts struktur er og hvordan du kan til og med bruke andre APIer som lar deg lage dine egne presisjon flytende poeng. En flytpunkt er for det meste referert til som en flyte eller en dobbel, i de fleste lan Gjør det mulig å bruke et dobbelt eller dobbelt presisjon flytpunkt, da det gir et bredere spekter og en bedre nøyaktighet enn en float eller et presisjonsflytpunkt. Noen språk og APIer gir deg mulighet til å skape større flytpunkter, eller enda mindre. Dette gjør at du kan endre nøyaktigheten og rekkevidden av decimaler De mest kjente flytpunktene er 16 bits halv, 32 bits singel, 64 bits dobbel, 128 bits firedoble, 256 bits octuple. Alle flytende punkter har en lignende struktur, et tegnbit 0 eller 1 som forteller datamaskinen hvorvidt desimaltegnet er negativt eller ikke, eksponenten som forteller datamaskinen hvilken eksponent av 2 som brukes og mantisen som forteller datamaskinen verdien Hver type har en annen layout for eksponenten og mantissen, men selvfølgelig forblir tegnbiten den det samme, siden det er et boolsk eksponent og mantissa-konsept. Mantissaen og eksponenten blir ofte sett i vitenskap, som kjemi, fysikk og biologi. Det er ofte kjent som vitenskapelig notasjon, hvor du setter det første nummeret som ikke er 0 først og juster eksponenten for å matche verdien. For eksempel vil 0 15 bli skrevet som 1 5 10 -1, 15 vil bli skrevet som 1 5 10 1 I disse tilfellene er mantissen 1 5 og eksponenten vil være enten -1 eller 1. Men binære fungerer annerledes, siden det bare har 2 alternativer, i dette tilfellet, hvis du har 1 0101 2 3, betyr ikke det første 1 faktisk fordi du vil at det første nummeret ikke skal være 0, så det vil alltid være en 1 I dette tilfellet vil mantissa være 0101 og eksponenten vil være 3 Selvfølgelig betyr 1 0101 2 3 1010 1, som oversetter til 2 3 2 1 2 -1 8 2 0 5 10 5.To konvertere desimal til flytpunkt du kan bruke 3 forskjellige tilnærminger, den logiske tilnærmingen, den matematiske tilnærmingen og programmeringen. Den logiske tilnærmingen er måten å gjøre det uten å ha en kalkulator eller en datamaskin med deg, den matematiske måten er å gjøre det ved å bare fylle ut en formel og programmeringsmåten er å kjøre en algoritme. Den logiske måten er om du tenker på vårt desimalsystem, bruker vi en prikk til Legg merke til at eksponenten begynner å bli negativ 19 31 betyr 1 10 1 9 10 0 3 10 -1 1 10 -2 Så et binært tall med en desimal i mellom vil bety det samme, men bare med en base på 2. En forklaring av hva 11 01 ville bety i semi-binær. Nå, for å konvertere 11 01 til et ekte binærtall, ville du måtte oversette dette til vitenskapelig notasjon, i dette tilfellet 1 101 2 1 Som ville gjøre en eksponent av 1 og en mantisse av 101 Vi kjenner også tegnbiten, som er 0, siden det er ikke et negativt tall. Den endelige tingen å bestemme er mantissen og eksponenten som du vil bruke, hvis du bruker en dobbel, akkurat som dette eksempelet, har du en eksponent på 11 biter og en mantissa på 52 biter. Eksponenten til dette nummeret er ikke bare 1, dette skyldes at halvparten av eksponentens verdi er reservert for negative eksponenter. Dette er når du legger til 2 eksponentbit-1 -1 til eksponent vi hadde før, så det ville bli 1 2 11-1 -1 0 2 10 1024 100 0000 0000 Hvilket gir mening siden halvparten av eksponentens verdi er reservert av negative eksponenter, 1023 011 1111 1111 som eksponent er 2 0 1022 011 1111 1110 er 2 -1 osv. Til slutt krever mantissa 52 biter, så for oss vil mantissa ikke være 101, men det ville være 101 49 null s. Nu legger du sammen den endelige eksponenten og mantissaen, med tegnbiten 1 som tegn, 100 0000 0000 som eksponent og 101 49 null s som mantissa 1100 0000 0000 1010 48 null s eller C0 0A 00 00 00 00 00 00.På konvertering med logikk inn i formler kan vi definere noen formler. Vi kan forbedre den matematiske konvertering ved å legge til et par bitvis operatører Java. public statisk byte getMantissa dobbelt d offentlig statisk byte getMantissa float f offentlig statisk byte getExponent double d public statisk byte getExponent float f offentlig statisk lang så lang dobbel d byte e getExponent d byte m getMantissa d byte bit byte em 1 lang verdi d. Klikk her for å lære mer om Advanced Binary. Floating-Point Numbers. From denne illustrasjonen, kan du bestemme Følgende tegnbiten er 1 Indikerer et negativt tall. Eksponentverdien er 10000010 binær eller 130 desimal. Subtraherer 127 fra 130 blader 3, som er den faktiske eksponenten. Mantissa vises som følgende binære tall. Det er et forstått binært punkt til venstre for mantissen som er alltid foran et 1 Dette sifferet utelates fra den lagrede formen på flytpunktet. Legg til 1 og binærpunktet til begynnelsen av mantissen gir følgende verdi. For å justere mantissen for eksponenten, flytt desimalpunktet til venstre for negative eksponentverdier eller høyre for positive eksponentverdier Siden eksponenten er tre, justeres mantissa som følger. Resultatet er et binært flytende punktnummer. Binære sifre til venstre for desimaltegnet representerer kraften til to som svarer til deres posisjon For eksempel representerer 1100 1 2 3 1 2 2 0 2 1 0 2 0, som er 12.Binære siffer til høyre for desimaltegnet representerer også kraften til to som svarer til deres posisjon. Hvordan noensinne er kreftene negative. For eksempel representerer 100 1 2 -1 0 2 -2 0 2 -3 som tilsvarer 5. Summen av disse verdiene er 12 5 Fordi tegnebiten ble satt, bør dette tallet være negativt. Så, den heksadesimale verdien 0xC1480000 er -12 5.Relaterte Knowledge Base-artikler. Development Tools. Hardware Collateral. Important information. This nettstedet bruker informasjonskapsler for å lagre informasjon på datamaskinen din Ved å fortsette å bruke nettstedet vårt, samtykker du i våre cookies. Don t vise denne meldingen again. Decimal to Floating Point Converter. About Decimal til Floating Point Converter. Dette er en desimal til binær flytende punkt omformer Det vil konvertere et desimaltall til nærmeste enkelt-presisjon og dobbel-presisjon IEEE 754 binær flytpunkt tall ved hjelp av runde halv til jevne avrunding av standard IEEE avrundingsmodus Den implementeres med arbitrær presisjon aritmetikk, så konverteringene er riktig avrundet. Den vil konvertere både normale og subnormale tall og konvertere tall som overløper til uendelig o r understrøm til null. De resulterende flytpunktet kan vises i ti former i desimal, i binær, i normalisert desimalvitenskapelig notasjon, i normalisert binær vitenskapelig notasjon, som en normalisert desimal ganger en effekt på to, som et desimal heltall ganger en kraft på to, som et desimal heltal ganger en kraft på ti, som en heksadesimal flytende punkt konstant, i rå binær og i rå heksadesimal. Hver form representerer den eksakte verdien av flytpunktet. Hvorfor bruke denne konverteren. Dette omformer vil vise deg hvorfor tall i datamaskinprogrammene, som 0 1, ikke oppfører seg som du forventer. Innenfor datamaskinen kan de fleste tall med et desimaltegn bare tilnærmet et annet tall, bare en liten bit unna den du vil ha , må stå for det For eksempel, i enkelt-presisjon flytpunkt, blir 0 1 0 100000001490116119384765625 Hvis programmet ditt skriver ut 0 1, ligger det for deg hvis det skriver ut 0 100000001, det ligger fortsatt, men minst det forteller deg at du virkelig ikke t har 0 1.Hvordan du bruker denne konverteren. Nå et positivt eller negativt tall, enten i standard f. eks. 134 45 eller eksponent f. eks. 1 3445e2 skjema Angi fraksjonelle verdier med desimaltegn og ikke bruk kommaer. I hovedsak kan du skrive inn et Dataprogrammet aksepterer som flytende punkt bokstavelig, bortsett fra uten suffiks som f. Kryss av boksene for IEEE-presisjonen du vil velge Dobbel enkelt eller begge Dobbel er standard Dobbel betyr en 53-bit signatur mindre hvis det er unormalt med en 11-bit eksponent Enkelt betyr en 24-bit significand mindre hvis subnormal med en 8-bit eksponent. Kontroller boksene for hvilket utdataformat du vil velge en eller alle ti Tiimal er standard. Klikk Konverter for å konvertere. Klikk Slett for å tilbakestille skjemaet og start fra grunnen. Hvis du vil konvertere et annet tall, skriv bare over det opprinnelige nummeret og klikk på Konverter. Det er ikke nødvendig å klikke på Clear først. Det er ti utgangsformer å velge mellom. Dekimal Vis flytpunktstallet i desimaltall Utvid utmatingsboks , om nødvendig sary, for å se alle sifrene. Binær Vis flytende punktnummer i binær Utvid utgående boks, om nødvendig, for å se alle sifre. Normalisert desimalvitenskapelig notasjon. Vis det flytende punktnummeret i desimal, men kompakt, ved hjelp av normalisert vitenskapelig notat. Utvid utgang boks, om nødvendig, for å se alle sifrene. Normalisert binær vitenskapelig notasjon. Vis flytende punktnummer i binær, men kompakt, ved hjelp av normalisert binær vitenskapelig notasjon. Merk unormale tall vises normalisert, med deres faktiske eksponent. Normaliserte desimal ganger en strøm av to Vis det flytende punktnummeret i en hybrid normalisert vitenskapelig notasjon, som et normalisert desimalnummer ganger en kraft på to. Dekimalt heltall ganger en kraft på to. Vis flytpunktspunktet som et desimal heltall ganger en kraft på to. Den binære representasjonen av desimal-tallet er bitmønsteret til flytpunktspresentasjonen, mindre tilbaketrukket nuller. Dette skjemaet er mest interessant for negative eksponenter, siden det representerer det flytende punktnummeret som en dyadisk fraksjon. Dekimalt heltall ganger en effekt på ti Vis flytpunktstallet som et desimal heltall ganger en effekt på ti Dette skjemaet er mest interessant for negative eksponenter, siden det representerer flytpunktnummeret som en brøk Utvide utgangskassen, om nødvendig, for å se alle sifre. Hexadecimal flytende punktkonstant Vis det flytende punktnummeret som en heksadesimal flytendepunktskonstant. Merk Det er mange måter å formatere heksadesimale flytende punktkonstanter på, som du ville se om du for eksempel sammenlignet utdataene fra Java, Visual C, Gcc C og Python-programmer. Forskjellene på tvers av ulike språk er overfladiske, selv om det ikke kan vises nulpunktet nuller, kan positive eksponenter kanskje ikke ha et plustegn, etc Denne konverteren formaterer konstantene uten tilbakevendende nuller og uten plustegn. Merknad Som mange programmeringsspråk viser denne omformeren unormaliserte subnormale tall, med deres eksponenter satt til minimum n ormal eksponent. Merk Det siste heksadesimale sifferet i en heksadesimal flytende punktkonstant kan ha etterfølgende binære 0s innenfor dette betyr ikke nødvendigvis at de finnes i det valgte IEEE-formatet. Råbinary Vis det flytende punktnummeret i dets røde IEEE-format tegnbit etterfulgt av eksponentfeltet etterfulgt av significand-feltet. Raw hexadecimal Vis flytpunktet i dets rå IEEE-format, tilsvarende det rå binære formatet, men uttrykt kompakt i heksadesimale. Se her for mer informasjon om disse utgangsformene. Det er to utgangsflagger. Inexakt Hvis dette er merket, viser dette at konverteringen var uaktsom, det vil si at den måtte avrundes til en tilnærming av inngangsnummeret. Konverteringen er uaktuell når desimalutgangen stemmer ikke overens med desimalinngangen, men dette er en raskere måte å fortelle. Merk denne omformeren flagger overløp til uendelig og understrøm til null som inexact. Subnormal Hvis det er merket, viser dette at tallet var for lite og konvertert med mindre enn full presisjon Den faktiske presisjonen er vist i parentes. Jeg skrev denne konverteren fra begynnelsen av det ikke stole på native konverteringsfunksjoner som strtod eller strtof eller printf. Det er basert på den store heltallbaserte algoritmen som jeg beskriver i min artikkel Korrekt desimal til flytende punkt ved hjelp av stor Integrerte jeg har implementert det ved hjelp av BCMath. For praktiske grunner har jeg satt en vilkårlig noe grense på lengden på desimalinngangen du får en feilmelding hvis du treffer den. Dette vil filtrere innganger som w ellers vil det overgå til uendelig eller understrømning til null, men det vil også hindre deg i å komme inn i noen vanskelige halvveis runde tilfeller. For platen skjønner imidlertid denne omformeren alle de vanskelige eksemplene jeg har diskutert på nettstedet mitt. For alle innganger som aksepteres, men utdata er korrekt, uansett hvilke feil som kommer ut av mitt omfattende test. Forstå Floating Point Precision, aka Hvorfor gir Excel meg feilaktig svar. Vi mottar noen ganger e-post fra våre kunder som hevder å ha funnet en beregningsfeil i Excel, da faktisk ikke beregningen er feil, men bivirkningene av binær flytpunktsprecision gjør det til den måten Dagens forfatter Jessica Liu, en programleder i Excel-teamet, diskuterer hvordan Excel utfører beregninger, forklarer hvorfor noen ganger ser du svar du ikke kan forvente, og gir noen tips om hvordan du unngår å avrunde problemer. Ta en titt på følgende tabell. Jeg vil raskt kunne identifisere tilfellene der absolutt forskjellen er stor er enn eller lik 0 005 Så jeg bruker en betinget formateringsregel på den absolutte forskjellskolonnen for å formatere verdier som er større enn eller lik 0 005 for å være rød. Som en skanning nedover bordet merker jeg at verdien 0 005 ikke er uthevet Jeg sjekker over min betingede formateringsregel og formelen jeg brukte for å beregne den absolutte forskjellen ABS A2-B2, de synes å være riktige. Jeg øker så nøyaktigheten til kolonnen for absolutt forskjell for å få mer nøyaktige resultater. Jeg oppdager at resultatene har endret seg Hvorfor har 1 3240 1 3190 0 0049999999999999.Har du noen gang oppstått i en lignende situasjon der regnearket ikke gir deg det resultatet du forventet for en tilsynelatende enkel beregning. Du har sjekket ut beregningene dine og kan fortsatt ikke finne ut hvor det gikk galt. Vel scenario du står overfor kan skyldes flytende punkt presisjon. Excel ble utformet i henhold til IEEE-standarden for binær flytende-punkt-aritmetikk IEEE 754 Standarden definerer hvor flytende - Punktsnummer lagres og beregnes IEEE 754-standarden er mye brukt fordi det tillater at flytende punktnumre lagres i en rimelig mengde plass, og beregninger kan oppstå relativt raskt. Fordelen med å flyte over fastpunktsrepresentasjon er at den kan støtte et bredere utvalg av verdier For eksempel representerer et fastpunktspresentasjon som har 5 desimaltall med desimaltegnet plassert etter det tredje sifferet, tallene 123 34, 12 23, 2 45 osv. mens flytende punktrepresentasjon med 5 sifferpresisjon kan representere 1 2345, 12345, 0 00012345 osv. Tilsvarende tillater flytende punktrepresentasjon også beregninger over et bredt spekter av størrelser, samtidig som presisjon opprettholdes. For eksempel. Flating-punktsrepresentasjon som har 4-sifret presisjon.1 1 10 -1 x 1 1 10 -1 1 21 x 10 -2.Fixed-punktsrepresentasjon som har 4-sifret presisjon med desimaltegnet plassert etter første siffer.0 110 x 0 110 0 012.Alle tall uttrykt i flytende punktformat a re rasjonelle tall Irrasjonelle tall som eller ikke-avslutende rasjonelle tall må tilnærmet Antallet presisitetsnivåer begrenser også nøyaktigheten av tallene Excel-butikk 15 signifikante siffer av presisjon For eksempel kan tallet 1234567890123456 ikke representeres nøyaktig hvis 15 sifre med presisjon brukes. IEEE 754 flytpunktstandarden krever at tall lagres i binært format. Dette betyr at en konvertering må skje før tallene kan brukes i beregninger. Hvis tallet kan representeres nøyaktig i flytende format, så Omregningen er eksakt Hvis ikke, vil konverteringen resultere i en avrundet verdi som representerer den opprinnelige verdien Tall som vises nøyaktig i desimalformatet må kanskje tilnærmet når det konverteres til binært flytpunkt. For eksempel kan fraksjonen 1 10 være representert i desimalformatet som det rasjonelle tallet 0 1 Imidlertid kan 0 1 ikke representeres nøyaktig i binær flytpunkt av endelig nøyaktig ion 0 1 blir det gjentagende binære desimal 0 0001100110011, hvor sekvensen 1100 gjentar uendelig Dette tallet kan ikke representeres i en begrenset mengde plass. I Excel blir den avrundet med ca. 2 8E-17 når den er lagret. Struktur av en Flytende punktnummer. En flytende punktnummer lagres i binær i tre deler innenfor et 65-biters område skiltet, eksponenten og mantissa. Skiltet lagrer tegn på tallet positivt eller negativt 0 representerer et positivt tall mens 1 representerer et negativt tall. Eksponenten lagrer kraften til 2 som tallet blir hevet eller senket. Eksponentfeltet må kunne representere både positive og negative eksponenter For å unngå å lagre negative eksponenter, legges en biasverdi til selve eksponenten Forspenningen for dobbeltspesifikasjons tall er 1023 For eksempel angir en lagret verdi på 1000 en eksponent på 1000 1023, eller -23. Mantissa lagrer det faktiske tallet Det består av en underforstått ledende bit og fracti på biter Mantissens lagringsstørrelse bestemmer hvor nær to tilstøtende flytpunktsnumre kan være. Mantittene og eksponenten lagres i separate komponenter. Nøyaktigheten til et tall varierer avhengig av størrelsen på mantisen. Excel kan lagre tall fra 1 79769313486232E308 til 2 2250738585072E-308, men det kan bare gjøre det innen 15 siffer av precisionmon Eksempler på feil på grunn av flytende punktberegning. Eksempel 1 Presisjonstap ved bruk av svært store tall. Den resulterende verdien i A3 er 1 2E 100, samme verdi som A1 Dette skyldes at Excel lagrer 15 siffer av presisjon. Det vil være nødvendig med minst 100 siffer av presisjon for å beregne formelen ovenfor. Eksempel 2 Presisjonstap ved bruk av svært små tall. Den resulterende verdien i celle A1 er 1 00012345678901 i stedet for 1 000123456789012345 Dette er igjen er fordi Excel lagrer 15 sifre med presisjon Minst 19 siffer av presisjon ville være nødvendig for å beregne formelen ovenfor. Eksempel 3 Gjenta binære tall . Mange kombinasjoner av aritmetiske operasjoner på flytpunktstall kan gi resultater som synes å være feil med svært små mengder. For eksempel kan ligningen vurderes til mengden -2 78E-17 eller -0 0000000000000000278 i stedet for 0 Dette er på grunn av at IEEE 754-standarden krever at numre lagres i binærformat Som jeg tidligere beskrev, kan ikke alle desimaltall konverteres nøyaktig til binære, som i tilfelle av 0 1 Konverteringen forårsaket tap av presisjon. Korrigering av presisjon Feil. La oss gå tilbake til mitt aller første eksempel der min betingede formatering tilsynelatende ikke fungerte jeg vet nå, det skyldtes at tallene jeg brukte for å beregne den absolutte forskjellen ikke hadde nøyaktige binære ekvivalenter. Dette resulterte i 1 3240 1 3190 0 0049999999999999.There er to grunnleggende måter du kan kompensere for noen av feilene på grunn av flytende punktberegning. Den første metoden er å bruke ROUND-funksjonen. RUND-funksjonen kan brukes til å rund tallene til antall desimaler som kreves i beregningene For min absolutte forskjellskolonne krever jeg bare 4 desimaler med presisjon Så jeg endrer formelen i kolonnen for absolutt forskjell fra. Min betingede formateringsregel fungerer som forventet nå siden 0 0049999999999999 er avrundet til 0 0050. Den andre metoden for å hindre avrundingsfeil fra å påvirke arbeidet ditt, er ved å bruke alternativet Presisjon som vist Dette valget styrker verdien av hvert tall i regnearket for å være den viste verdien For å slå på dette alternativet, følg disse trinnene. Klikk på Microsoft Office-knappen - Excel-alternativer - Advanced. In Når du kalkulerer denne arbeidsbokdelen, velger du arbeidsboken du vil ha, og merker deretter av for Angi presisjon som vist. Gå tilbake til mitt absolutte forskjellseksempel, setter jeg nummeret format for å vise fire desimaler, og så slår jeg på Presisjon som vist alternativ Siden skjermverdien er den faktiske verdien i cellen nå, er min betingede formatti ng fungerer riktig. Det er viktig å merke seg at når arbeidsboken er lagret vil all nøyaktighet utover fire desimaler gå tapt. Dette alternativet påvirker den aktive arbeidsboken, inkludert alle regneark. Du kan ikke angre dette alternativet og gjenopprette de tapte dataene, slik at du lagrer arbeidsboken din før aktiverer dette alternativet Dette alternativet anbefales vanligvis ikke med mindre du er sikker på at du ikke vil trenge mer presisjon for situasjonen din.
Comments
Post a Comment