25. april 2001 - 11:41Der 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.
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;
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
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.
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...
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.