Avatar billede fidusen Nybegynder
30. oktober 2001 - 15:50 Der er 13 kommentarer og
1 løsning

Decimal afrunder

Hej Eksperter!

Jeg skal have lavet en decimal-afrunder, hvor man afrunder et givent kommatal til et givent antal decimaler.

Det kunnne være en funktion, hvor man angiver min. disse 2 parametre:
- tal (kommatallet, vi skal afrunde)
- dec (antallet af decimaler, vi vil afrunde til)

function afrund(tal,dec)

Eks:
  var pi = 3.141592654;
  afrund(pi,3)  ->  3.142


Skabelon til at lave funktionen:

<HTML>
<HEAD>

<SCRIPT language=\"JavaScript\">
function afrund(tal,dec){
resultat = tal + \" og \" + dec;
myform.taloutput.value = resultat;
}
</SCRIPT>

</HEAD>
<BODY>
<BASEFONT face=\"arial\">
<H4>Decimal-afhugger</H4>

<FORM name=\"myform\" action=\"\" onSubmit=\"afrund(myform.talinput.value,myform.decinput.value);return false\">
Kommatal: <INPUT type=\"text\" name=\"talinput\" value=\"3.141592654\"><BR>
Antal decimaler: <INPUT type=\"text\" name=\"decinput\" value=\"3\"><BR>
Afrundet: <INPUT type=\"text\" name=\"taloutput\"><BR>
<INPUT type=\"submit\" value=\" Afrund \">
<INPUT type=\"reset\" value=\" Nulstil \">
</FORM>

</BODY>
</HTML>
Avatar billede Slettet bruger
30. oktober 2001 - 15:54 #1
<SCRIPT language=\"JavaScript\">
function afrund(tal,dec){
tal = parseInt(tal);
dec = parseInt(dec);
divi = 1;
for (i = 0; i < dec; i++) {
divi = divi * 10;
}
tal = (Math.round(tal * divi) / divi);
resultat = tal + \" og \" + dec;
myform.taloutput.value = resultat;
}
</SCRIPT>
Avatar billede Slettet bruger
30. oktober 2001 - 15:57 #2
Lidt kortere:

<SCRIPT language=\"JavaScript\">
function afrund(tal,dec){
divi = 1;
for (i = 0; i < parseInt(dec); i++) divi *= 10;
tal = Math.round(parseInt(tal) * divi) / divi;
resultat = tal + \" og \" + dec;
document.myform.taloutput.value = resultat;
}
</SCRIPT>
Avatar billede fidusen Nybegynder
30. oktober 2001 - 16:02 #3
Resultatet skal bare være det forkortede tal, ikke det der og-noget jeg skrev...
Avatar billede Slettet bruger
30. oktober 2001 - 16:05 #4
<SCRIPT language=\"JavaScript\">
function afrund(tal,dec){
divi = 1;
for (i = 0; i < parseInt(dec); i++) divi *= 10;
tal = Math.round(parseInt(tal) * divi) / divi;
document.myform.taloutput.value = tal;
}
</SCRIPT>
Avatar billede Slettet bruger
30. oktober 2001 - 16:06 #5
Ups, ups, ups!

<SCRIPT language=\"JavaScript\">
function afrund(tal,dec){
divi = 1;
for (i = 0; i < parseInt(dec); i++) divi *= 10;
tal = Math.round(parseFloat(tal) * divi) / divi;
document.myform.taloutput.value = tal;
}
</SCRIPT>

En ret fatal fejl! parseInt istedet for parseFloat! @8-))
Avatar billede fidusen Nybegynder
30. oktober 2001 - 16:08 #6
Hmm... det virker ikke.
Avatar billede Slettet bruger
30. oktober 2001 - 16:10 #7
Jeg kan godt få det til at virke:
http://www.friserverplads.dk/phoenixv/afrund.html
Avatar billede fidusen Nybegynder
30. oktober 2001 - 16:11 #8
Incl. fejlrettelse virker det :-)
Tak for den hurtige hjælp!

- FiDuSeN -
Avatar billede fidusen Nybegynder
30. oktober 2001 - 16:12 #9
Jeg havde ikke opdateret browseren og havde derfor ikke set rettelsen :-)
Avatar billede Slettet bruger
30. oktober 2001 - 16:12 #10
No problemo!
Avatar billede Slettet bruger
30. oktober 2001 - 16:13 #11
\"Det var rart at kunne hjælpe!\" (hva\'... er jeg ikke den fødte pædagog???)
Avatar billede fidusen Nybegynder
30. oktober 2001 - 16:14 #12
:-)
Avatar billede jumper Nybegynder
30. oktober 2001 - 16:38 #13
Selvom der er svaret, kan denne her sikkert også hjælpe:

http://jibbering.com/faq/#_46

Stocktons side har også en maasse ting omkring numre ;o)

/Thor
Avatar billede fidusen Nybegynder
01. november 2001 - 20:59 #14
Der er en stenet fejl i decimal-afrunderen...

Normalt, hvis man indtaster et højere tal (i antal decimal-feltet) end der er cifre efter kommaet (i kommatal-feltet) vil den bare skrive alle cifrene og ikke noget bag efter. Men prøv så at indtaste disse ting:

Når man indtaster 272 returnerer den: 3.1415926540000005

OG når man indtaster 275 får man:
3.1415926539999996

Hvorfor sker det mon?

---

Til dem der ikke har været med før - Her er den færdige kode:

<HTML>
<HEAD>

<SCRIPT language=\"JavaScript\">
function afrund(tal,dec){
divi = 1;
for (i = 0; i < parseInt(dec); i++) divi *= 10;
tal = Math.round(parseFloat(tal) * divi) / divi;
document.myform.taloutput.value = tal;
}
</SCRIPT>

</HEAD>
<BODY>
<BASEFONT face=\"arial\">
<H4>Decimal-afrunder</H4>

<FORM name=\"myform\" onSubmit=\"afrund(myform.talinput.value,myform.decinput.value);return false\">
Kommatal: <INPUT type=\"text\" name=\"talinput\" value=\"3.141592654\"><BR>
Antal decimaler: <INPUT type=\"text\" name=\"decinput\" value=\"3\"><BR>
Afrundet: <INPUT type=\"text\" name=\"taloutput\"><BR>
<INPUT type=\"submit\" value=\" Afrund \">
<INPUT type=\"reset\" value=\" Nulstil \">
</FORM>

</BODY>
</HTML>

---

- FiDuSeN -
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