[英]How to do an Integer.parseInt() for a decimal number?
Java代碼如下:
String s = "0.01";
int i = Integer.parseInt(s);
然而,這會拋出一個 NumberFormatException ......可能出什么問題了?
String s = "0.01";
double d = Double.parseDouble(s);
int i = (int) d;
例外的原因是整數不包含有理數(= 基本上是分數)。 因此,嘗試將0.3
解析0.3
int 是無稽之談。 double
或float
數據類型可以保存有理數。
Java 將double
轉換為int
是通過向零舍入來刪除小數分隔符后的部分。
int i = (int) 0.9999;
i
將為零。
0.01 不是整數(整數),因此您當然不能將其解析為 1。 使用Double.parseDouble
或Float.parseFloat
代替。
采用,
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);
另一種解決方案是可能的。
int number = Integer.parseInt(new DecimalFormat("#").format(decimalNumber))
例子:
Integer.parseInt(new DecimalFormat("#").format(Double.parseDouble("010.021")))
輸出
10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.