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