JavaScript har mange fordeler som en Web utvikling språk . Dens en grell svakhet er flyttall , eller desimal, beregninger. Mens heltall operasjoner i JavaScript anses å være pålitelig , kan resultatene av flyttall beregninger noen ganger være overraskende. Disse overraskelser er ansvarlig for tidlig aldring og irritabilitet hos en stor andel av uerfarne programmerere . Interessante resultater
Feil i flyttall beregninger er ikke ukjent i andre programmeringsspråk. Disse oppstår vanligvis i stor verdi tall. JavaScript gir interessante resultater under operasjoner med verdier så lave som 0,06 + 0,01. De fleste vil tilby 0,07 som løsningen på denne likningen . JavaScript løser dette svaret som ,06999999999999 . Nær, men ikke nær nok for kommersiell anvendelse .
Formatering og Precision
JavaScript tilbyr to funksjoner, toFixed () og toPrecision ( ) som eliminerer displayet problemer forbundet med uforutsigbare resultater . Den toFixed ( )-funksjonen gjør det mulig å bestemme antall siffer viser programmet etter desimaltegnet . I tilfelle av , basert på de argumenter num.toFixed (2) viser bare de første to sifrene etter desimaltegnet med automatisk avrunding. Den toPrecision ( )-funksjonen viser et svar med det totale antallet sifre som er angitt i argumentet uten hensyn til deres forhold til desimaltegnet.
Årsaken
< p > Avrundingsfeil er innført når desimaltall konverteres til binære strenger . Denne prosessen er nødvendig fordi en datamaskin kan bare jobbe med enere og nuller . Mange språk overvinne denne avrundingsfeilen ved bruk av datatyper. Ved å angi hvordan og med hvilken presisjon en variabel er lagret , språk som C og Java redusere disse feilene. Når erklære en variabel i JavaScript, er ikke angitt . Dette resulterer i tegn , strenger, heltall og flyter blir behandlet mer eller mindre likt.
Løsning
Den mest brukte strategi for å overvinne flyttall feil i JavaScript er å multiplisere begge variabler ved 100 før du utfører en beregning ved hjelp av runden ()-funksjonen for å redusere flyttall feil og dividere produkt av denne operasjonen ved 100 før du skriver svaret .