Ich möchte die Zahl nach dem Dezimalpunkt zählen.
Eingang(Float) | Ausgabe(int) |
---|---|
0.0 | 0 |
1.0 | 0 |
0.1 | 1 |
11.1 | 1 |
0.001 | 3 |
public int getPrecision(Float val){
//In Java ist die Methode zum Konvertieren von Float nach int eine Menge nutzloser Verarbeitung, daher wird sie als Zeichenfolge gezählt.
String str = String.valueOf(val);
//Das Ende des Satzes".0"Und".00000"Alle, die mit enden, werden auf die Ziffer 0 gesetzt
if(str.matches("^.*\\.0+$")){
return 0;
}
int index = str.indexOf(".");
return str.substring(index + 1).length();
}
Ich kann machen was ich will.
Erstens der Teil des regulären Ausdrucks
str.matches("\\.0+$")
Als ich es als schrieb, wurde die Ausgabe seltsam.
Eingabe 0.0 Ausgang 1 ← falsch
Eingabe 0.1 Ausgang 1 ← Richtig
Das?
Wenn ich versuche zu debuggen
"0.0".matches("\\.0+$")
//Ergebnis:false
Das? Stimmt nicht überein
Tatsächlich war dieser Code gleichbedeutend mit dem folgenden Code.
"0.0".matches("^\\.0+$$")
//Ergebnis:false
Verwenden Sie bei Verwendung der String.matches-Methode in Java Regex einschließlich ^
und $
// \\.0+$Wenn Sie den regulären Ausdruck von verwenden möchten. .. ..
"0.0".matches("^.*\\.0+$")
//Ergebnis:true
http://d.hatena.ne.jp/kakkun61/20100104/1262605869
Recommended Posts