Je veux compter le nombre après la virgule décimale.
contribution(Float) | production(int) |
---|---|
0.0 | 0 |
1.0 | 0 |
0.1 | 1 |
11.1 | 1 |
0.001 | 3 |
public int getPrecision(Float val){
//En Java, la méthode de conversion de Float en int est beaucoup de traitement inutile, elle est donc comptée comme une chaîne de caractères.
String str = String.valueOf(val);
//La fin de la phrase".0"Et".00000"Tous ceux qui se terminent par sont définis sur le chiffre 0
if(str.matches("^.*\\.0+$")){
return 0;
}
int index = str.indexOf(".");
return str.substring(index + 1).length();
}
Je peux faire ce que je veux faire.
Tout d'abord, la partie de l'expression régulière
str.matches("\\.0+$")
Quand je l'ai écrit, la sortie est devenue étrange.
Entrée 0.0 sortie 1 ← faux
Entrée 0.1 Sortie 1 ← Correct
cette?
Quand j'essaye de déboguer
"0.0".matches("\\.0+$")
//résultat:false
cette? Ne correspond pas
En fait, ce code était synonyme du code ci-dessous.
"0.0".matches("^\\.0+$$")
//résultat:false
Lorsque vous utilisez la méthode String.matches en java, utilisez une expression régulière comprenant ^
et $
// \\.0+$Lorsque vous souhaitez utiliser l'expression régulière de. .. ..
"0.0".matches("^.*\\.0+$")
//résultat:true
http://d.hatena.ne.jp/kakkun61/20100104/1262605869
Recommended Posts