关于Java:如何 Integer.parseInt() 为decimal

 2019-04-29 

How to do an Integer.parseInt() for a decimal number?

Java代码如下:

1
2
String s ="0.01";
int i = Integer.parseInt(s);

但是,这将引发一个数字格式异常…可能出什么事了?


1
2
3
String s ="0.01";
double d = Double.parseDouble(s);
int i = (int) d;

例外的原因是整数不包含有理数(=基本上是分数)。因此,试图将0.3解析为int是无稽之谈。doublefloat数据类型可以保存有理数。

Java将EDOCX1 3对EDCOX1的6种方式投射的方式是通过删除小数分隔符后的部分通过舍入零来完成。

1
int i = (int) 0.9999;

i将变为零。


0.01不是整数(整数),因此您当然不能将它解析为一个整数。用Double.parseDoubleFloat.parseFloat代替。


使用,

1
2
String s="0.01";
int i= new Double(s).intValue();

1
2
String s="0.01";
int i = Double.valueOf(s).intValue();

这种转换在Java中实际上是非直觉的。

以下面的字符串为例:"100.00"

C:一个简单的标准库函数,至少从1971年开始(Atoi这个名字是从哪里来的?)

1
int i = atoi(decimalstring);

Java:强制双通道(或浮点)解析,接着是强制转换

1
int i = (int)Double.parseDouble(decimalstring);

爪哇肯定有一些古怪的东西


suppose we take a integer in string.

String s="100";
int i=Integer.parseInt(s);
or
int i=Integer.valueOf(s);

but in your question the number you are trying to do the change is the whole number

String s="10.00";

double d=Double.parseDouble(s);

int i=(int)d;

这样你就得到了你想要得到的价值的答案。


使用BigDecimal获取舍入:

1
2
3
4
5
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();

用这个

int number = (int) Double.parseDouble(s);


使用Double.parseDouble(String a),您要查找的不是整数,因为它不是整数。