Tall
JavaScript kan skille mellom desimaltall(float) og heltall(integer). Vi kan ikke deklarere dem siden vi ikke har noen mulighet for å angi type for en variable, men vi kan sørge for at en tall-varable oppfører seg som heltall eller desimaltall.
Vi har ofte behov for å konvertere fra tekst til tall. JavaScript har to egnede funksjoner: parseInt() og parseFloat()
parseFloat(string)
Funksjonen tar en string som input og produserer et flytetall.
parseFloat('2.67') -> 2.67 parseFloat('2.67 meter') -> 2.67 parseFloat('0.2e6') -> 200000 parseFloat('jensen') -> NaN
Merk at ikke-numeriske verdier på slutten av en god begynnelse ignoreres, og at når funksjonen feiler returnerer den verdien NaN ("Not-a-Number"). Noen gamle nettlesere kan levere 0 istedet for NaN. Vi kan teste om en verdi er NaN med funksjonen: isNaN(verdi), se nedenfor.
Du kan forsøke deg fram med noen konverteringer nedenfor (skriv inn en string og trykk på likhetstegnet)
parseInt(string[,base])
Funksjonen tar en string som input og produserer et heltall. Vi kan dessuten angi hvilket tallsystem vi vil ha svaret i. 10-tallsystemet er default.
parseInt('12') -> 12 parseInt('12.4') -> 12 parseInt('012') -> 10 (verdier som starter på 0 tolkes som oktale) parseInt('12',8) -> 10 parseInt('0x12') -> 18 (verdier som starter på 0x tolkes som hexadesimale) parseInt('12',16) -> 18 parseInt('jensen') -> NaN parseInt('14jens',5) -> 9
Merk igjen at ikke-numeriske verdier på slutten av en god begynnelse ignoreres, og at når funksjonen feiler returnerer den verdien NaN. Vi kan teste om en verdi er Nan med funksjonen: isNaN(verdi), se nedenfor.
Du kan forsøke deg fram med noen konverteringer nedenfor (skriv inn en string og eventuelt tallsystemet du vil bruke og trykk på likhetstegnet)
isNaN(verdi)
isNaN står for "Not-a-Number". Denne funksjonen kan brukes for å teste om en verdi er et gyldig tall, flytetall eller heltall.
function testNan1(){ var a="jensen" if(isNaN(a)) alert("ooops, a er ikke et tall"); else alert("it is a number"); } function testNan2(){ var a="21.7oggodjulallesammen"; var t=parseFloat(a); if(isNaN(t)) alert("ooops"); else alert(t); }
Test:
Test:
infinity
Merk at en divisjon med 0 ikke slår ut med isNan() true. Vi får en egen verdi: infinity
function Divide(){ var a=21; var b=0; var c=a/b; if(isNaN(c)) alert("ooops"); else alert(c); }
Test:
Math
Vi finner det vi forventer i objektet math. De vi oftest trenger er kanskje:
abs(x) sin(x),cos(x),tan(x) max(x,y),min(x,y) ceil(x),floor(x),round(x) pow(x,y),exp(x),sqrt(x),log(x) random()
random-funksjonen returnerer et flytetall mellom 0 og 1. Hvis vi vil ha en funksjon som returnerer et heltall mellom to grenser a <= t <=b kan vi skrive en slik funksjon:
function randint(a,b){ return (Math.floor(Math.random()*(b-a+1)))+a; }
Testen ser slik ut:
function doRandomTest(n,a,b){ T=''+n+ ' tester av randint('+a+','+b+'): '; for (var ix=0;ix < n; ix++) T=T+' '+randint(a,b); document.getElementById('randomresult').innerHTML=T; }
Du kan inspisere en grafisk framstilling av en test av algoritmen:
Test random https://borres.hiof.no/wep/js/jstall/histogram.html