JavaScript har många fördelar som en webbutveckling språk . Dess en uppenbar svaghet är flyttal , eller decimal , beräkningar . Medan heltal verksamhet i JavaScript anses vara tillförlitliga , kan resultaten av flyttal beräkningar vara ibland förvånande . Dessa överraskningar är ansvariga för tidigt åldrande och irritabilitet hos en stor andel av nybörjare programmerare . Intressanta resultat
Fel i flyttal beräkningar inte okänd i andra programmeringsspråk . Dessa uppträder vanligen i stora värde tal . JavaScript ger intressanta resultat under operationer med värden så låga som 0,06 + 0,01 . De flesta människor skulle erbjuda 0.07 som lösningen på denna ekvation . JavaScript löser detta svar som ,06999999999999 . Nära , men inte tillräckligt nära för kommersiell tillämpning .
Formatering och Precision
JavaScript erbjuder två funktioner , toFixed () och toPrecision ( ) som eliminerar problem med bildskärmen i samband med oförutsägbara resultat . Den toFixed ( ) funktionen låter dig bestämma antalet siffror visar programmet efter decimalkommat . I fråga om valuta , med argumentet num.toFixed ( 2 ) visar bara de två första siffrorna efter decimalkommat med automatisk avrundning . Den toPrecision ( ) funktionen visar ett svar med det totala antalet siffror som anges i argumentet utan hänsyn till sin relation till decimal .
Orsaken
Avrundningsfel införs när decimaltal konverteras till binära strängar . Denna process är nödvändig eftersom en dator kan bara arbeta med ettor och nollor . Många språk övervinna denna avrundningsfelet med hjälp av datatyper . Genom att ange hur och med vilken precision en variabel lagras , språk som C och Java minska dessa fel . När förklara en variabel i JavaScript , finns ingen typ anges . Detta resulterar i tecken , strängar , heltal och flyter behandlas mer eller mindre lika . Den vanligaste strategin för att övervinna flyttal fel i JavaScript är att
Lösning
multiplicera båda variablerna med 100 innan du utför en beräkning med hjälp av rundan ( ) funktionen för att minska flyttal fel och dividera produkten av denna operation med 100 innan du skriver ut svaret .