簡體   English   中英

如何為十進制數執行 Integer.parseInt()?

[英]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 是無稽之談。 doublefloat數據類型可以保存有理數。

Java 將double轉換為int通過向零舍入刪除小數分隔符后的部分

int i = (int) 0.9999;

i將為零。

0.01 不是整數(整數),因此您當然不能將其解析為 1。 使用Double.parseDoubleFloat.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM