I programmering refererer begrepet "flytende punkt" til en type numeriske data som brukes til å representere desimalnummer. Det er flere forskjellige typer flytende punktdata som du kan bruke i C#, hver med sitt eget sett med egenskaper og evner.
I denne artikkelen tar vi en nærmere titt på flytende punkttyper i C#.
Forstå numeriske datatyper
Før vi diskuterer den flytende punktdatatypen, er det viktig å ha en grunnleggende forståelse av de forskjellige typene numeriske data som er tilgjengelige i C#. Vanlig brukte numeriske data inkluderer:
Nå som vi vet, brukes flytende punkt til å lagre desimaldataene i dem. Neste trinn er å diskutere alle forskjellige former for flytende punkttall.
Det grunnleggende om flytende punktdata
Flytepunktdata brukes til å representere desimaltall som ikke kan representeres nøyaktig ved hjelp av heltalldata. For eksempel, hvis du vil representere nummer 1.5 Ved å bruke heltalldata, må du runde dem opp eller ned til nærmeste verdi (enten 1 eller 2). Imidlertid, med flytende punktdata, kan du representere 1.5 Akkurat.
Følgende er de flytende punkttypene som brukes i C# for å representere desimalverdier med forskjellige områder og nivåer av presisjon.
I alle tre flytende punktdatatyper er desimalen av høyere presisjon.
Kjennetegn på flytende punktdatatyper
Flytende punkt numeriske typer i C# brukes til å representere tall som har en brøkdel. Følgende tabell illustrerer egenskapene til forskjellige flytende punktdatatyper i C#:
Flytepunktdatatyper | Område | Presisjon | Størrelse |
---|---|---|---|
flyte | ± 1.5 x 10-45 til ± 3.4 x 1038 | ~ 6-9 sifre | 4 byte [32 biter] |
dobbelt | ± 5.0 × 10−324 til ± 1.7 × 10308 | ~ 15-17 sifre | 8 byte [64 biter] |
desimal | ± 1.0 x 10-28 til ± 7.9228 x 1028 | 28-29 sifre | 16 byte [128 biter] |
Som standard har hver av disse tre flytende punktene verdier som er lik null. Hver av disse har et minimum og en maksimumsverdi.
Bruke flytende punktdata i C#
For å erklære en flottørvariabel, kan du bruke følgende syntaks:
FLOAT MYFLOAT = 3.14f;
Merk at du må legge til suffikset F til verdien for å indikere at det er en flottør.
For å erklære en dobbel variabel, kan du bruke følgende syntaks:
dobbel mydouble = 3.14;
Som standard blir flytende punktlitteraler i C# behandlet som dobbelt. Hvis du vil bruke en float -bokstavelig, kan du legge til suffikset F til verdien.
For å erklære desimalene, bruker vi suffikset M eller M:
desimal mydecimal = 3.14m;
Forståelse av flytende punkt presisjonsproblemer
Presisjonen av flytende punkttall i C# er begrenset av antall biter som brukes til å representere tallet. For eksempel bruker et flytende punktnummer (float) 32 biter for å representere tallet, mens et flytende punktnummer (dobbelt) bruker 64 biter.
En konsekvens av denne begrensede presisjonen er at ikke alle desimalverdier kan representeres nøyaktig ved bruk av flytende punkttall. For eksempel verdien 0.1 kan ikke erklæres ved hjelp av flytende punkttall. Dette kan føre til uventet oppførsel når du utfører aritmetiske operasjoner.
En annen sak er at noen operasjoner kan innføre avrundingsfeil. Å legge til to veldig små tall sammen kan for eksempel resultere i tap av presisjon. Tilsvarende kan det å trekke fra to veldig store antall også føre til tap av presisjon.
Tenk for eksempel følgende kode:
dobbelt num1 = 0.1;
dobbelt num2 = 0.2;
dobbelt resultat = num1 + num2;
Du kan forvente at verdien av resultatet skal være 0.3, men på grunn av måten flytende punktdata lagres, vil den faktiske verdien av resultatet være litt annerledes (i dette tilfellet vil det være omtrent 0.3000000000000000004). Resultater som disse kan endre produksjonen og kan forårsake uventet oppførsel i programmet, så det er viktig å være klar over disse presisjonsproblemene.
For å løse disse problemene, kan desimaldatatypene foretrekkes fremfor float og dobbel. Desimalen har høyere presisjon enn dobbelt og er bedre for å representere verdier som krever høy grad av nøyaktighet.
Konklusjon
Flytpunktdatatypene kan lagre tall med forskjellig presisjon. De tre hovedtypene inkluderer float, dobbel og desimal. Blant alt har desimalen den høyeste presisjon. Ved å bruke disse flytende punkttypene i C#, kan man enkelt representere desimaltall. For en detaljert beskrivelse av de tre typene, les artikkelen.