Javaコードは次のとおりです。
String s = "0.01";
int i = Integer.parseInt(s);
しかし、これはNumberFormatExceptionをスローしています...何が間違っているのでしょうか?
0.01は整数(整数)ではないため、もちろん1として解析することはできません。代わりにDouble.parseDouble
またはFloat.parseFloat
を使用してください。
String s = "0.01";
double d = Double.parseDouble(s);
int i = (int) d;
例外の理由は、整数が有理数(=基本的に小数)を保持しないためです。したがって、0.3
をintに解析しようとするのは無意味です。 double
またはfloat
データ型は有理数を保持できます。
Javaがdouble
をint
にキャストする方法は、ゼロに丸めて小数点以下の部分を削除するによって行われます。
int i = (int) 0.9999;
i
はゼロになります。
つかいます、
String s="0.01";
int i= new Double(s).intValue();
String s="0.01";
int i = Double.valueOf(s).intValue();
この種の変換は、実際、Javaでは驚くほど直感的ではありません
たとえば、次の文字列を取ります: "100.00"
C:少なくとも1971年以降の単純な標準ライブラリ関数( 「atoi」という名前はどこから来たのですか? )
int i = atoi(decimalstring);
Java:Double(またはFloat)解析による必須パッセージ、それに続くキャスト
int i = (int)Double.parseDouble(decimalstring);
Javaは確かにスリーブにいくつかの奇妙な点があります
BigDecimalを使用して丸めを取得する:
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();
文字列に整数を取ります。
文字列s = "100"; int i = Integer.parseInt(s);またはint i = Integer.valueOf(s);
しかし、あなたの質問では、あなたが変更しようとしている数字は整数です
文字列s = "10.00";
double d = Double.parseDouble(s);
int i =(int)d;
これにより、取得しようとしている値の答えを取得できます。
Double.parseDouble(String a)
を使用してください。整数ではないため、探しているものは整数ではありません。
これを使う
int number = (int) Double.parseDouble(s);