Domanda

Questo è il mio programma.Molto semplicemente messo, dovrebbe arrotondare un numero inserito in una data quantità di decimali.Cioè4.245 Arrotondato a 2 decimali darebbe 4.25.Tuttavia, lo farò sempre arrotondato a un intero intero ... perché?Ciò che mi ha sconcertante è che uso lo stesso codice in Android e funziona perfettamente

import java.util.Scanner;


public class Rounder {

public static void main(String[] args) {
    double input1, roundednumber;
    int input2;
    Scanner keyboard = new Scanner(System.in);
    System.out.println("number to round ");
    input1 = keyboard.nextDouble();
    System.out.println("decimals");
    input2 = keyboard.nextInt();

    roundednumber = rounder(input1, input2);
    System.out.println(roundednumber);
}


public static double rounder(double number, int decimals){
    int multiplier = (int) Math.pow(10, decimals);
    double roundednumber;
    roundednumber = Math.round(number*multiplier)/multiplier;
    return roundednumber;       
}
}
.

Ed ecco lo snippet dalla mia classe Android

double result1 = fv1/(Math.pow(1+(r1/n1),n1*t1));
result1 = (double) (Math.round(result1 * 100)) / 100;
.

È stato utile?

Soluzione

Dividere da un numero intero produce un intero, in modo da poter utilizzare:

Math.round(number * multiplier) / (double)multiplier;
.

Altri suggerimenti

Prova

roundednumber = Math.round(number*multiplier)/((double)(multiplier));
.

Questo perché math.round () restituisce un int e stai dividendo da un int.Quindi con conseguente int.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top