Stian F Skrevet 22. september 2005 Del Skrevet 22. september 2005 (endret) 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 22. september 2005 av Stian F Lenke til kommentar
AssKicR Skrevet 23. september 2005 Del Skrevet 23. september 2005 (endret) 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 23. september 2005 av AssKicR Lenke til kommentar
boemane Skrevet 23. september 2005 Del Skrevet 23. september 2005 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
AssKicR Skrevet 23. september 2005 Del Skrevet 23. september 2005 (endret) 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 23. september 2005 av AssKicR Lenke til kommentar
F Skrevet 9. oktober 2005 Del Skrevet 9. oktober 2005 Pluss på 2, del på 5, gang med 5. int round5(int i) { return (i+2)/5*5; } Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå