siDDis Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 Grunnen til at eg stiller spørsmål om Javascript på denne delen av forumet er at eg ikkje forventer eit skikkeleg svar frå den delen av forumet som blir lest av webdesignere. Som bør være forståelig nok Eg driver på med å skrive ein 3d renderer i Javascript. Akkurat nå driver eg på med å finpusse på polygonskanneren og det involverer skalering av flyttall der f.eks 10.15 blir til 10150 med hjelp av bit shifting. Som kjent så er beregninger i heltall raskare enn flyttall, men det eg lurer på er om dette er noko å tjene på i Javascript? Eg rekne med at viss alle tall i Javascript er double så vil det gå treigare med å skalere til heltall? Lenke til kommentar
MailMan13 Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 (endret) Med forebehold om at jeg ikke er noe dybdeekspert på dette. Bitvise operatorer som '<<' og '>>', impliserer ihvertfall cast til integer. F.eks (1.5 >> 2) vil f.eks trunkre 1.5 til 1 og så skifte opp til 4, så det er definitivt en heltallsoperator. Jeg mener å ha lest at det er to numeriske datatyper "under panseret" i javascript, int og float, som tilordnes automatisk utifra verdier som legges inn. Det skal dog være semi-transparent for koderen, slik man håndterer alle numeriske variable likt. F.eks kan man si var a=5; var b=2; var c = a / b; og få a og b som integers, men man har ikke skille mellom heltalls- og flyttallsdivisjon i javascript, så c blir en float. Mulig parseInt og parseFloat-funksjonene kan hjelpe til å "tvinge" variablene til en gitt type under panseret, men igjen er man vel avhengig av at parseren gjør ting implisitt. Hva som blir raskest i ditt tilfelle vil jeg tro avhenger av om en potensielt kast til integer + skift er raskere enn en flyttalls- divisjon/multiplikasjon i parseren som kjører koden. Det må man evt. teste seg frem til. Endret 17. februar 2010 av MailMan13 Lenke til kommentar
GeirGrusom Skrevet 18. februar 2010 Del Skrevet 18. februar 2010 Men du får da ikke gjort om 10.50 til 1050 med bitshift? Det der ville i såfall vært en desimalshift, og ikke en bitshift, ettersom 10.50 << 2 = 3.761582 * 10^-36. For å få en desimalskift må du multiplisere med 100 ikke bitshifte med 2. Lenke til kommentar
Emancipate Skrevet 15. april 2010 Del Skrevet 15. april 2010 Ja, alle tall er double. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå