将字符串十进制(2.9)更改为Int或Long问题

时间:2013-01-15 21:55:38

标签: java

好吧,我对java很新,但我很快就学会了(希望如此)。所以无论如何这是我的问题:

我有一个字符串(例如我们将使用2.9),我需要将其更改为int或long或类似的东西,我可以用它来与另一个数字进行比较。

据我所知,int不支持小数,我不确定是否有多长时间?如果不是,我需要知道支持小数的是什么。

这是错误:java.lang.NumberFormatException: For input string: "2.9"包含Interger.parseInt和Long.parseLong

所以任何帮助都会受到赞赏!

4 个答案:

答案 0 :(得分:5)

您无法直接从小数点值获取int(或)long

一种方法是:

首先得到一个double值,然后得到int(或)long。

示例:

int temp =  Double.valueOf("20.2").intValue();
System.out.println(temp);

输出:

20

答案 1 :(得分:4)

intlong都是整数数据类型,分别是32位和64位。您可以使用floatdouble来表示浮点数。

答案 2 :(得分:3)

该字符串(2.9)既不是integer也不是long。您应该使用一些小数点类型,例如floatdouble

答案 3 :(得分:1)

intlong都是整数值(long表示长整数,它是一个具有更高容量的整数)。解析失败,因为这些类型不支持小数部分。

如果您使用它们并强制执行投射,则放弃该数字的小数部分。

double iAmADouble = 100 / 3;
int iWasADouble = (int)iAmADouble; //This number turns out to be 33

改为使用doublefloat