Avatar billede jmarkling Nybegynder
10. april 2002 - 14:39 Der er 9 kommentarer og
1 løsning

afrundning

Jeg har lavet en afrundings funktion som følger:

<SCRIPT>
    function afrund(tal){
          tal * 100;
        tal = Math.round(tal)/100;
          document.write(tal);
   
    }
</SCRIPT>

Den skulle gerne eksempelvis afrunde
217,1789 til 217,18
Men når den modtager tallet som paramter opfatter den det som 2 paramereter (217, 1789) og resultatet, bliver altså 217 øv øv øv....
Help me...
Hvad kan jeg gøre anderledes, for at komme uden om problemet?

Hvis der er en der har en super løsning, så når jeg får ,5 at det bliver udskrevet som ,50 så øger jeg points kraftigt...





Avatar billede jmarkling Nybegynder
10. april 2002 - 14:41 #1
Som jeg kører med det nu, ganger jeg med 100 uden for funktionen, og så virker det fino, men det er bare ikke korrekt nok...
Avatar billede jakoba Nybegynder
10. april 2002 - 15:02 #2
I javascipt bruges punktum ( . ) istedet for komma ( , ) som decimalpunkt (engelsk notation).

så hvis der bliver skrevet 123,456 i dit felt må du udskifte kommaet med et punktum før du prøver at fortolke tallet som tal

fx:
function talFraFelt( feltobj )
  var feltstreng = feltobj.value;
  feltstreng = feltstreng.replace( /\,/g, "." );
  var felttal = parseFloat( feltstreng );
  return felttal;
}; //end talFraFelt( Form element objekt ) -> number

mvh JakobA
Avatar billede mrr Nybegynder
11. april 2002 - 10:06 #3
/**
* Den function afrunder en streng eller et tal til
* et tal med et givent antal decimaler.
* 2 er sat som default!
*
* Man kan eventuelt med en ny function konvertere
* resultatet til en streng med komma fremfor punktum.
*/

function roundInt(tal,decimaler) {

    // tal:      string (evt. med komma (,)) eller number
    // decimaler: 0 = 1 , 1 = 10, 2 = 100, 2 = 1000 etc ...

   
    if (typeof tal == "string") tal = tal.replace( /\,/g, "." );
    tal = parseFloat(tal);
    decimaler = (decimaler) ? decimaler : 100;
   
    return parseInt(tal*decimaler)/decimaler;
}

function replaceDotWithComma(tal) {

    tempStr = "" + tal;
   
    return tempStr.replace( /\./g, "," );
}

alert(replaceDotWithComma(roundInt('34,4545646')));
Avatar billede mrr Nybegynder
11. april 2002 - 10:32 #4
// Korrektion til ovenstående

function replaceDotWithComma(tal) {

    var tempStr = "" + tal;
    var tempExt = (tempStr.indexOf('.')==-1) ? ",00" : (tempStr.length - tempStr.indexOf('.') == 2) ? "0" : "";
    return tempStr.replace( /\./g, "," ) + tempExt;
}
Avatar billede jakoba Nybegynder
13. april 2002 - 00:55 #5
I dit spørgsmål lyder det lidt somom du måske kalder funktionen med:

  var afrundet = afrund( 217,1789 ); // FEJL eksempel

og det vil ihvertfald gå galt da javascript ser det som 2 parametre med komma imellem. Der skal "-er om for at gøre det til en streng:

  var afrundet = afrund( "217,1789" ); // OK eksempel

men inde i funktionen skal det komma stadig laves til et punktum som beskrevet ovenfor.

mvh JakobA
Avatar billede jmarkling Nybegynder
13. april 2002 - 02:03 #6
TAK...
Avatar billede jmarkling Nybegynder
14. april 2002 - 23:45 #7
Det blev en kombo af det hele... Jeg fik til at virke...
<SCRIPT>

    function afrund(tal){
    tal = tal *100;
    tal = Math.round(tal)/100;
    tal = tal +""
    if (tal.indexOf(".") < 0) {
    tal += ".00";
      }
      else if (tal.indexOf(".") == (tal.length-2)) {
      tal += "0";
    }

   
    document.write(tal);
}
</SCRIPT>

kalder på følgende måde <SCRIPT>afrund(<%="\""+be_pris+"\""%> )</SCRIPT>
Avatar billede jmarkling Nybegynder
14. april 2002 - 23:47 #8
Skriv lige som svar hvis I vil have points ellers tager jeg dem bare igen...
-Det der med at bytte , ud med . blev ikke nødvendigt... ved kald som ovensteånde
Avatar billede jakoba Nybegynder
14. april 2002 - 23:55 #9
Ok.

Men jeg vil nu anbefale dig at lave den udskiftning alligevel. IE er berømt for sine "features" der lokker folk til at lave ukorrekt kode der så ikke virker andre steder. "se så sølle NS er, den kan ikke..."

mvh JakobA
Avatar billede jmarkling Nybegynder
15. april 2002 - 00:07 #10
-OK, Jacob...
Det virker fint både med IE og NS, men det kan være jeg tilføjer din kode, samtidig med jeg ryder op og kommenterer det færdige resultat (-:
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