116 votes

Quelle est la meilleure pratique pour arrondir un flottant à deux décimales ?

J'utilise eclipse + Android SDK.

Je dois arrondir une valeur flottante à deux décimales. J'utilise généralement le "truc" suivant en utilisant la bibliothèque Math.

float accelerometerX = accelerometerX * 100;
    accelerometerX = round(accelerometerX);
    Log.d("Test","" + accelerometerX/100);

Mais je pense que ce n'est pas la meilleure façon de procéder.

Existe-t-il une bibliothèque pour effectuer ce type d'opérations ?

4 votes

Vous pouvez jeter un coup d'œil à cette question : stackoverflow.com/questions/153724/

1 votes

Ou vous pouvez trouver le nombre après la décimale, le convertir en int, et faire un décalage de bit à droite. En gros, c'est ce que ferait un rond.

4voto

Ilya Bystrov Points 1470

Voici une solution simple en une ligne

((int) ((value + 0.005f) * 100)) / 100f

-5voto

Sandeep16 Points 1
//by importing Decimal format we can do...

import java.util.Scanner;
import java.text.DecimalFormat;
public class Average
{
public static void main(String[] args)
{
int sub1,sub2,sub3,total;
Scanner in = new Scanner(System.in);
System.out.print("Enter Subject 1 Marks : ");
sub1 = in.nextInt();
System.out.print("Enter Subject 2 Marks : ");
sub2 = in.nextInt();
System.out.print("Enter Subject 3 Marks : ");
sub3 = in.nextInt();
total = sub1 + sub2 + sub3;
System.out.println("Total Marks of Subjects = " + total);
res = (float)total;
average = res/3;
System.out.println("Before Rounding Decimal.. Average = " +average +"%");
DecimalFormat df = new DecimalFormat("###.##");
System.out.println("After Rounding Decimal.. Average = " +df.format(average)+"%");
}
}
/* Output
Enter Subject 1 Marks : 72
Enter Subject 2 Marks : 42
Enter Subject 3 Marks : 52
Total Marks of Subjects = 166
Before Rounding Decimal.. Average = 55.333332%
After Rounding Decimal.. Average = 55.33%
*/

/* Output
Enter Subject 1 Marks : 98
Enter Subject 2 Marks : 88
Enter Subject 3 Marks : 78
Total Marks of Subjects = 264
Before Rounding Decimal.. Average = 88.0%
After Rounding Decimal.. Average = 88%
*/

/* You can Find Avrerage values in two ouputs before rounding average
And After rounding Average..*/

0 votes

Nous devons utiliser l'import java.text.DecimalFormat ; sinon il jette une exception...

0 votes

C'est beaucoup d'éléments supplémentaires pour ce qui est essentiellement la réponse de l'Ombre à la question suivante . DecimalFormat.format(double) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X