将字符串小数(2.9)转换为整数或长整数的问题

5

好的,我相当新于Java语言,但是我正在迅速学习(希望如此)。所以这就是我的问题:

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

据我所知,int不支持小数,我不确定long是否也是如此?如果不是,我需要知道哪些支持小数。

这是错误: java.lang.NumberFormatException: For input string: "2.9" 使用 Interger.parseInt 和 Long.parseLong 都会出现这个错误。

所以,任何帮助都将不胜感激!


整数是一个没有小数部分或者分数的数字。https://zh.wikipedia.org/wiki/%E6%95%B4%E6%95%B0 - Steve Kuo
4个回答

6

您不能直接从小数点值获取 int(或)long

一种方法是:

首先获取一个双精度浮点数,然后获取 int(或)long

示例:

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

输出:

20

或者更好的方式是 (int)Double.parseDouble("20.2"),以避免创建一个临时的 Double 对象。 - Lawrence Dol

4

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


3

那个字符串 (2.9) 既不是 integer 也不是 long。你应该使用一些带有小数点的类型,比如 float 或者 double


2

intlong 都是整数值(其中 long 是一个容量更大的长整型的表示)。由于这些类型不支持小数部分,所以解析失败。

如果你使用它们并强制转换,那么你将放弃数字的小数部分。

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

请使用doublefloat代替。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接