Gå til innhold

Runde tall til nærmeste 5


Anbefalte innlegg

Hei

 

Er det noen som vet hvordan jeg får java til å runde et resultat av en beregning til nærmeste 5, dvs. hvis svaret er 318 skal det rundes til 320 og vis svaret er 317 skal det rundes til 315 osv.??

 

Mvh

Stian F

Endret av Stian F
Lenke til kommentar
Videoannonse
Annonse

med decimaltall er det iallefall Math.round(blah)

 

Det finner sikkert en bedre måte, men dette var eneste jeg kom på i farten

 

313 at du deler dette på 10 så du får 31,3

bruker round for å gjøre den om til 31,0

og ganger du med 10 for å få 310


import java.util.Scanner;
import java.lang.Math;

class TestKlasse
{
public static void main(String[] args) 
{	
 Scanner tastatur = new Scanner(System.in);

 System.out.print("Input: ");
 int iInput = tastatur.nextInt();

 float fCalculate = (float)iInput / 10;
 fCalculate = Math.round(fCalculate);
 fCalculate = fCalculate * 10;
 int iOutput = (int)fCalculate;

 System.out.println("Output " + iOutput);
}
}


Endret av AssKicR
Lenke til kommentar
med decimaltall er det iallefall Math.round(blah)

 

Det finner sikkert en bedre måte, men dette var eneste jeg kom på i farten

 

313 at du deler dette på 10 så du får 31,3

bruker round for å gjøre den om til 31,0

og ganger du med 10 for å få 310


import java.util.Scanner;
import java.lang.Math;

class TestKlasse
{
public static void main(String[] args) 
{	
 Scanner tastatur = new Scanner(System.in);

 System.out.print("Input: ");
 int iInput = tastatur.nextInt();

 float fCalculate = (float)iInput / 10;
 fCalculate = Math.round(fCalculate);
 fCalculate = fCalculate * 10;
 int iOutput = (int)fCalculate;

 System.out.println("Output " + iOutput);
}
}


Problemet her er at han vil runde av til nærmeste 5. 313 skal dermed rundes av til 315, ikke til 310.

 

En løsning er å benytte deg av modula.

 

public int rundTilFem(int nummer)
{
  int modula = nummer % 10;
  if (modula >= 3 || modula <= 7)
  {
     nummer += (5 - modula);
  }
  else
  {
     if (modula < 5)
        nummer -= modula;
     else
        nummer += (10 - modula);
  }
  return nummer;
}

 

Du kan også bruke Math.round(); i else setningen i stedet for if (modula > 5) ...

Lenke til kommentar

Som jeg sa fantes det sikkert en bedre måte ;), jeg var trøtt og kom ikke på noe annet :)

 

problemet jeg fikk med din var at den runda den til alt til XX5,, tilogmed 399 ble runda til 395. Forstod det slik at den skulle rundas til 400 :-/

 

 

Denne skulle runde av til nærmeste 5 som han ville :)

 


public static int rundTilFem(int nummer)
{
 int modula = nummer % 10;
  
 switch (modula) {
 	//NED TIL 0
     case 1: 
 	{
   nummer -= 1;
   break;
 	}
 	case 2: 
 	{
   nummer -= 2;
   break;
 	}
 	//OPP TIL 5
 	case 3: {
   nummer += 2;
   break;
 	}
 	case 4: {
   nummer += 1;
   break;
 	}
 	//NED TIL 5
 	case 6: {
   nummer -= 1;
   break;
 	}
 	case 7: {
   nummer -= 2;
   break;
 	}
 	//OPP TIL 0
 	case 8: {
   nummer += 2;
   break;
 	}
 	case 9: {
   nummer += 1;
   break;
 	}
 }

 return nummer;
}

Endret av AssKicR
Lenke til kommentar
  • 3 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...