Avatar billede bajerfar Nybegynder
28. juni 2006 - 16:27 Der er 8 kommentarer

alle tal efter komma

Hej eksperter
Hvordan skiller jeg en streng ved komma? Hvis der kun er én decimal efter komma, skal der indsættes et nul således at 25,5 bliver til 25,50. Bemærk at der er tale om en tekststreng og ikke en Int, og min streng skal ikke konverters til Int.
Avatar billede fennec Nybegynder
28. juni 2006 - 16:34 #1
Fandt denne kode som Roenving lavede for nogle år siden:
http://www.eksperten.dk/spm/392792

function afrund(tal){
  tal = ""+(Math.round(tal*100))/100;
  punktum = tal.indexOf(".");
  if (punktum==-1)return tal+".00";
  if (tal.length-punktum==3)return tal;
  else return tal+"0";
}
Avatar billede mclemens Nybegynder
28. juni 2006 - 18:32 #2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type"

content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

tal="2.110.025,56546";

alert(tal);

  fejl=false;

  tala=tal.split(".");
  for(i=0;i<tala.length-1;i++)if(tala[i].indexOf(",")!=-1)fejl="komma";

  if(fejl==false){

    talb=tala[tala.length-1].split(",");

    if(talb.length>2)fejl="komma";
    else{

      if(talb[1].length>2){i2=10;
        for(i=0;i<talb[1].length-3;i++)i2=i2*10;
        talb[1]=Math.round(talb[1]/i2);
      }

    }
  }

  if(fejl!=false){
    if(fejl=="komma")alert("Der må kun bruges et komma til adskillelse af

decimaler");
  }

  else{
    tala[tala.length-1]=talb.join(",");
    tal=tala.join(".");
    alert(tal);
  }

</script>

</head><body>

</body></html>
Avatar billede mclemens Nybegynder
28. juni 2006 - 18:42 #3
Skulle lige tweakes lidt...

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

tal="2.110.025";

alert(tal);

  fejl=false;

  tala=tal.split(".");
  for(i=0;i<tala.length-1;i++)if(tala[i].indexOf(",")!=-1)fejl="komma";

  if(fejl==false){

    if(tala[tala.length-1].indexOf(",")!=-1){
      talb=tala[tala.length-1].split(",");

      if(talb.length>2)fejl="komma";
      else{

        if(talb[1].length>2){i2=10;
          for(i=0;i<talb[1].length-3;i++)i2=i2*10;
          talb[1]=Math.round(talb[1]/i2);
        }
        else if(talb[1].length==1)talb[1]+="0";
      }
    }else talb=[tala[tala.length-1],'00'];

  }

  if(fejl!=false){
    if(fejl=="komma")alert("Der må kun bruges et komma til adskillelse af decimaler");
  }

  else{
    tala[tala.length-1]=talb.join(",");
    tal=tala.join(".");
    alert(tal);
  }

</script>

</head><body>

</body></html>
Avatar billede mclemens Nybegynder
28. juni 2006 - 18:45 #4
Fejlen i den fennec kom med var at den fordrede, at den fordrede, at man skrev decimaler med . - og der var ingen validering på tusindtalsseperatorer - og så afrundede også de to sidste decimaler så det blev med .00 uanset hvad.

Min afrunder decimaler over 2 og tager hensyn til tusindtalsseperatorer
og splitter op baseret på indtastninger med et dansk komma.
Avatar billede mclemens Nybegynder
28. juni 2006 - 18:47 #5
[ Hvordan skiller jeg en streng ved komma? ]
nystreng=strengvariabelnavn.split(",");
... så har du nystreng[0]="det før komma";
og nystreng[1]="det efter komma"; :o)
Avatar billede mclemens Nybegynder
28. juni 2006 - 20:23 #6
Prøv evt. disse tal i 28/06-2006 18:42:07
tal="025,1";
tal="2110025,1";
tal="2.110.025,1";
tal="2.110.025,11";
tal="2.110.025,111";
tal="2.110.025,115";
Avatar billede mclemens Nybegynder
28. juni 2006 - 21:12 #7
Udvidet lidt så den også kan bruge disse tal inputs:
tal="25.1"; // Svarer til 25,1
tal="25.01"; // Svarer til 25,01
tal="25.012"; // Svarer til 25012
tal="25.0124"; // Svarer til 25,0124


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type"

content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

tal="234.98686";

alert(tal);

  fejl=false;
  dktal=true;

  tala=tal.split(".");
  for(i=0;i<tala.length-1;i++)if(tala[i].indexOf(",")!=-1)fejl="komma";
if((tala.length>1)&&(tala[tala.length-1].indexOf(",")==-1)&&(tala[tala.length-1].length!=3)){tala

[tala.length-1]=","+tala[tala.length-1];dktal=false;}
  if(fejl==false){

    if(tala[tala.length-1].indexOf(",")!=-1){
      talb=tala[tala.length-1].split(",");

      if(talb.length>2)fejl="komma";
      else{

        if(talb[1].length>2){i2=10;
          for(i=0;i<talb[1].length-3;i++)i2=i2*10;
          talb[1]=Math.round(talb[1]/i2);
        }
        else if(talb[1].length==1)talb[1]+="0";
      }
    }else talb=[tala[tala.length-1],'00'];

  }

  if(fejl!=false){
    if(fejl=="komma")alert("Der må kun bruges et komma til adskillelse af decimaler");
  }

  else{
    tala[tala.length-1]=talb.join(",");
    tal=tala.join(".");
    if(!dktal)tal=tal.replace(".,",".");
    alert(tal);
  }

</script>

</head><body>

</body></html>
Avatar billede mclemens Nybegynder
28. juni 2006 - 21:23 #8
if(fejl=="komma")alert("Der må kun bruges et komma til adskillelse af decimaler");
->
  if(fejl=="komma")alert("Der må kun bruges et komma eller punktum  til adskillelse af decimaler hvis decimaler er forskellig fra 3");
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