Avatar billede aliaz Nybegynder
24. november 2004 - 20:12 Der er 7 kommentarer og
1 løsning

Seperation af heltal og decimal

Jeg har i forbindelse med et projekt brug for at skille timer og minutter ad i mit output fra en funktion, der er et komma-tal, f.eks. 1,2 time. Dette ønsker jeg skrevet som 1 time 12 minutter. Har hørt at Math. har en funktion til at skille heltal og decimal ad, men kan ikke lige finde det, så er ikke sikker. Men noget kan man gøre... Kan I hjælpe?
Avatar billede skovenborg Nybegynder
24. november 2004 - 20:53 #1
Jeg har ikke lige hørt om noget indeni Math, som kunne gøre det let og elegant, men du kan da prøve:
<script type="text/javascript">
  var num = "1,2";
  function beregnTid(str) {
      var test = str.match(/\d+\,\d+/g);
      if (test) {
        var arr = str.split(",");
        var min = parseFloat("0."+arr[1])*0.6;
        min = parseInt(min.toString().substr(2));
        var time = +arr[0];
        var timeStr = (time > 1) ? time+" timer " : (time == 1) ? time + " time " :"";
        var minStr = (min > 1) ? min+" minutter" : min + " minut";
        return timeStr + minStr;       
      }
      else return "";     
  }
  var str = beregnTid(num);
  alert(str);
</script>
Avatar billede skovenborg Nybegynder
24. november 2004 - 21:02 #2
og en lidt revideret udgave, hvor komma-tallet godt må være lidt større:
<script type="text/javascript">
  var num = "1,242340923323";
  function beregnTid(str) {
      var test = str.match(/\d+\,\d+/g);
      if (test) {
        var arr = str.split(",");
        var min = parseFloat("0."+arr[1])*0.6;
        min = min.toString().substr(2,2)+"."+min.toString().charAt(5);
        min = Math.round(min);
        var time = +arr[0];
        var timeStr = (time > 1) ? time+" timer " : (time == 1) ? time + " time " :"";
        var minStr = (min > 1) ? min+" minutter" : min + " minut";
        return timeStr + minStr;       
      }
      else return "";     
  }
  var str = beregnTid(num);
  alert(str);
</script>
Avatar billede olebole Juniormester
24. november 2004 - 22:19 #3
<ole>

skovenborg >> måske, du skulle teste, om OS'et bruger decimal-komma eller -punktum og splitte over det aktuelle tegn? Bare et lille forslag - men det kommer jo anpå så meget  :)

/mvh
</bole>
Avatar billede skovenborg Nybegynder
24. november 2004 - 23:06 #4
jaja, fin idé. Men jeg nøjes nu bare med at erstatte kommaer med punktummer:
<script type="text/javascript">
  var num = "1,26";
  function beregnTid(str) {
      str = str.replace(/\,/g,".");
      var test = str.match(/\d+\.\d+/);
      if (test) {
        var arr = str.split(".");
        var min = parseFloat("0."+arr[1])*0.6;
        min = min.toString().substr(2,2)+"."+min.toString().charAt(5);
        min = Math.round(min);
        var time = +arr[0];
        var timeStr = (time > 1) ? time+" timer " : (time == 1) ? time + " time " :"";
        var minStr = (min > 1) ? min+" minutter" : min + " minut";
        return timeStr + minStr;       
      }
      else return "";     
  }
  var str = beregnTid(num);
  alert(str);
</script>
Avatar billede skovenborg Nybegynder
24. november 2004 - 23:13 #5
og så kan:
var min = parseFloat("0."+arr[1])*0.6;
        min = min.toString().substr(2,2)+"."+min.toString().charAt(5);
        min = Math.round(min);
og bare skrives som:
var min = parseFloat("0."+arr[1])*0.6;
        min = Math.round(+min*100);
Avatar billede olebole Juniormester
25. november 2004 - 00:08 #6
Nåja ... okay ... jeg må skammeligt erkende, jeg ikke så den detalje i dit første eksempel, skovenborg. Naturligvis havde du tænkt på det - men så fik spørgeren lidt at vælge imellem  ;o)
Avatar billede aliaz Nybegynder
30. november 2004 - 16:54 #7
Tusind tak skovenborg - efter få justeringer virker den perfekt; manglende at tage hensyn til isNaN, samt en indbygget fejl med x,5 hvor den skrev 3 min istedet for 30 min.

Drop et svar for de velfortjente point ;)
Avatar billede skovenborg Nybegynder
30. november 2004 - 17:32 #8
svar :-)
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