Avatar billede tgl Nybegynder
25. april 2001 - 11:41 Der er 9 kommentarer og
2 løsninger

Middeltal

Jeg har udregnet nogle værdier som returneres, men mu vil jeg gerne have at de kun skal vises med 2 decimaler.
Foruden dette skal der ikke rundes op hvis decimalværdi er mindre end 5 og rundes op hvis over 5.

Eks.
8,134 = 8,13
8,135 = 8,14
Avatar billede limemedia Nybegynder
25. april 2001 - 11:47 #1
round(tal * 100)/100
Avatar billede jakoba Nybegynder
25. april 2001 - 11:48 #2
tal er det tal der skal rundes af
precicion er antal_decimaler gange 2 (dvs 4 giver 2 decimaler)

<script language=\'javascript\'>

function afrund ( tal, precision ) {
  precision= Math.round(precision);      // SKAL være integer.
  var pDec = Math.floor(precision/2);    // antal decimaler
  var p5 = precision -(2*pDec);            // 1 hvis \"halv\" decimal extra
  tal = tal*Math.pow(10,pDec);
  alert (\" \"+p5+\" \"+pDec+\" \"+tal);
  if ( p5 > 0 ) tal=tal*2;
  tal = Math.round(tal);    //kan fejle ved for mange decimaler og/eller store tal
  if ( p5 > 0 ) tal=tal*5;
  tal = \"\" +tal;                // streng fra nu af.
  if ( p5 > 0 ) {
    if ( tal[tal.length-1]==\"0\" ) {
      tal = tal.substring(0,tal.length-1);
    } else {
      pDec += 1;
    }
  };
  if ( pDec > 0 ) {
    tal = tal.substring(0,tal.length-pDec) +\".\" +tal.substring(tal.length-pDec);
  } else {
    for (i=0; i>pDec; i--) tal = \"\" +tal +\"0\";
  };
  return tal;
}; //end afrund ( float, integer ) -> string;

</script>
Avatar billede jakoba Nybegynder
25. april 2001 - 11:48 #3
Ok, måske lidt simplere :-))
Avatar billede limemedia Nybegynder
25. april 2001 - 11:59 #4
jakoba... noget med at hoppe over hvor gærdet er lavest... en round er altid simplest selvom måske ikke mest korrekt... giver altid det rigtige resultat
Avatar billede jakoba Nybegynder
25. april 2001 - 12:50 #5
ja og nej. den der dele med 100 tilsidst kan godt gå hen og generere en stribe decimaler hvis man er lidt uheldig. men javascrip runder på skjulte decimaler så din er klart bedst.
Avatar billede limemedia Nybegynder
25. april 2001 - 12:56 #6
jakoba >> no comprende... en round af et tal vil altid helt og holdent fjerne kommatal da resultatet bliver en integer... at dividere med 100 laver igen om til en float, ikke ? en integer divideret med 100 vil altid give max 2 decimaler efter kommaet...

correct me if I am wrong... min JS er lidt støvet
Avatar billede limemedia Nybegynder
25. april 2001 - 13:00 #7
ifølge http://developer.netscape.com/docs/manuals/js/client/jsguide/obj.htm#1008620 der for mig er lidt \"manualen\" for JS står der
\"round : Rounds argument to nearest integer\"

Avatar billede tgl Nybegynder
25. april 2001 - 13:25 #8
Skal der ikke stå Math.round. Jeg får script-fejl hvis jeg skriver round(tal*100)/100

Avatar billede limemedia Nybegynder
25. april 2001 - 13:26 #9
Math.round korrekt
Avatar billede jakoba Nybegynder
26. april 2001 - 13:04 #10
en decimal integer divideret med 100 giver en endelig repræsentation med 2 decimaler.

100 kan opløses i primfaktorerene 2,2,5,5 som alle går op i 10. Derfor giver /100 en endelig repræsentation (i titals-systemet)

en decimal integer divideret med 3 giver en uendelig repræsentation med uendelig mange decimaler. (eller også går 3 op:)
3 går nemlig ikke op i 10.

og 5 går ikke op i 2.
en binær integer divideret med 100 giver en uendelig repraæentation med uendelig mange decimaler. (eller også går 100 op:)

mvh JakobA
Avatar billede limemedia Nybegynder
26. april 2001 - 13:08 #11
*host* så lærte man det ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester