Der Java-Code ist:Wie wird eine Integer.parseInt() für eine Dezimalzahl ausgeführt? wie folgt
String s = "0.01";
int i = Integer.parseInt(s);
Dies ist jedoch eine Number werfen ... Was schief gehen könnte?
Der Java-Code ist:Wie wird eine Integer.parseInt() für eine Dezimalzahl ausgeführt? wie folgt
String s = "0.01";
int i = Integer.parseInt(s);
Dies ist jedoch eine Number werfen ... Was schief gehen könnte?
0.01 ist keine Ganzzahl (ganze Zahl), Sie können sie also natürlich nicht als eins analysieren. Verwenden Sie stattdessen Double.parseDouble
oder Float.parseFloat
.
String s = "0.01";
double d = Double.parseDouble(s);
int i = (int) d;
Der Grund für die Ausnahme ist, dass eine Ganzzahl keine rationalen Zahlen (= im Grunde Brüche) enthält. Also, versuchen, 0.3
zu einem int zu analysieren, ist Unsinn. Ein double
oder ein float
Datentyp kann rationale Zahlen enthalten.
Die Art und Weise Java wirft einen double
auf ein int
durch Entfernen des Teils nach dem Dezimalzeichen durch Runden gegen Null erfolgt.
int i = (int) 0.9999;
i
wird durch Null.
Verwenden Sie Double.parseDouble(String a)
, was Sie suchen, ist keine Ganzzahl, da es keine ganze Zahl ist.
Verwendung,
String s="0.01";
int i= new Double(s).intValue();
String s="0.01";
int i = Double.valueOf(s).intValue();
Verwendung dieses
int number = (int) Double.parseDouble(s);
Diese Art der Umwandlung ist eigentlich überraschend unintuitive in Java
Nehmen Sie zum Beispiel eine folgende Zeichenfolge: " 100,00 "
C: eine einfache Standard-Library-Funktion zumindest seit 1971 (Where did the name `atoi` come from?)
int i = atoi(decimalstring);
Java: Pflichtdurchgang von Double (oder Float) analysiert, von einer Besetzung gefolgt
int i = (int)Double.parseDouble(decimalstring);
Java hat sicher einige Kuriositäten, bis es Hülse ist
C Ignorieren Sie einfach den Rest der Zeichenkette und parsen Sie alles, was es analysieren kann (in diesem Fall ist es "100").Es gibt keine Möglichkeit für Sie zu wissen, ob 'atoi 'tatsächlich alles in der Zeichenkette analysiert oder nicht, ob die Zeichenkette eine Zahl enthält oder ob die Zahl den Typ übersteigt. 'strtol' ist eine bessere Alternative, wenn alle oben genannten Dinge erkannt werden können. Java ist strenger, aber es stellt sicher, dass all diese Fälle abgedeckt sind. – nhahtdh
Ich stimme Raywell zu, weil das 'Double.valueOf (" 16543 ") ist. IntValue();' Java will also ein PITA sein, wenn man schnell in int konvertieren will, aber Double ist viel allgemeiner. –
Verwenden von BigDecimal, um zu runden:
String s1="0.01";
int i1 = new BigDecimal(s1).setScale(0, RoundingMode.HALF_UP).intValueExact();
String s2="0.5";
int i2 = new BigDecimal(s2).setScale(0, RoundingMode.HALF_UP).intValueExact();
Ihre Besetzung wird die unvollständige Information vollständig verlieren. Ich bin mir nicht sicher, ob das eine gute Idee ist. – Joren
Ok! Vielleicht muss ich so etwas tun. Double d = Double.parseDouble (s); Recht? –
@ Joren: Ich weiß, aber er will ein Integer (wenn ich seinen Code überprüfen) –