Gå til innhold

Runde tall til nærmeste 5


Anbefalte innlegg

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
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) ...

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
  • 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...