7
votes

Java - Numéro de format pour imprimer une partie décimale uniquement

Y a-t-il un moyen simple de formater une décimale, un flotteur, une double, etc. imprimer uniquement la partie décimale du nombre? Je n'ai pas besoin de la partie entière, même / surtout si elle est nulle! J'utilise actuellement la méthode string.indexof (".) Associée à la méthode String.Substring () pour enlever la partie du numéro du côté droit de la décimale. Y a-t-il un moyen plus propre de faire cela? Impossible de trouver quoi que ce soit dans la classe Décimalformat ou la méthode Printf. Les deux retournent toujours un zéro avant la décimale.


2 commentaires

Voulez-vous afficher le point décimal?


Oui, je veux montrer le point décimal


3 Réponses :


7
votes

Vous pouvez supprimer la partie entière de la valeur en mettant le double à une longue. Vous pouvez ensuite soustraire cela de la valeur d'origine à laisser avec seulement la valeur fractionnée: xxx

et si vous souhaitez vous débarrasser du zéro principal, vous pouvez le faire: < Pré> xxx


3 commentaires

Je crois que cela imprimera toujours le premier zéro. J'en ai besoin pour imprimer: .5, pas 0,5.


+1 Ceci est nouveau pour moi. Voici un autre exemple .


ajouté dans la voie de la suppression du seuil de zéro, mais je crois que c'était plus ou moins ce que vous faisiez déjà. Soustraire pour éliminer la partie entière du nombre devrait encore être une solution plus attrayante, je pense.



5
votes

Diviser par 1 et obtenir le reste pour obtenir une partie décimale (en utilisant "%"). Utilisez Decimalformat pour formater le résultat (en utilisant le symbole "#" pour supprimer les 0unaux 0s):

double d1 = 67.22;
double d2 = d1%1;
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(d2));


0 commentaires

0
votes

Ceci imprimera 0.3

double x = 23.8;
int y =(int)x;
float z= (float) (x % y);
System.out.println(z);


1 commentaires

Cela fonctionnera mais c'est inutilement compliqué. Le simple fait de prendre le reste modulo 1 fera ou soustrayer toute la partie entière.