如何对十进制数执行 Integer.parseInt() ?
Java 代码如下:
String s = "0.01";
int i = Integer.parseInt(s);
然而,这抛出了 NumberFormatException... 可能出了什么问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
使用 BigDecimal 进行舍入:
Using BigDecimal to get rounding:
使用这个
int number = (int) Double.parseDouble(s);
use this one
int number = (int) Double.parseDouble(s);
这样你就可以得到你想要得到的值的答案。
This way you get the answer of the value which you are trying to get it.
使用
Double.parseDouble(String a)
您要查找的不是整数,因为它不是整数。Use
Double.parseDouble(String a)
what you are looking for is not an integer as it is not a whole number.还可以采用另一种解决方案。
示例:
输出
One more solution is possible.
Example:
Output
例外的原因是整数不包含有理数(=基本上是分数)。因此,尝试将
0.3
解析为 int 是无意义的。double
或float
数据类型可以保存有理数。Java 将
double
转换为int
的方式是通过向零舍入来删除小数分隔符后面的部分。i
将为零。The reason for the exception is that an integer does not hold rational numbers (= basically fractions). So, trying to parse
0.3
to a int is nonsense.A
double
or afloat
datatype can hold rational numbers.The way Java casts a
double
to anint
is done by removing the part after the decimal separator by rounding towards zero.i
will be zero.0.01 不是一个整数(整数),所以你当然不能将它解析为 1。使用
Double.parseDouble
或Float.parseFloat
代替。0.01 is not an integer (whole number), so you of course can't parse it as one. Use
Double.parseDouble
orFloat.parseFloat
instead.使用,
Use,
这种转换在 Java 中实际上非常不直观,
以下面的字符串为例:“100.00”
C:至少自 1971 年以来的一个简单标准库函数 (名称 `atoi` 从哪里来?)
Java:强制通过 Double(或 Float)解析,然后是强制转换
Java 确实有一些奇怪的地方
This kind of conversion is actually suprisingly unintuitive in Java
Take for example a following string : "100.00"
C : a simple standard library function at least since 1971 (Where did the name `atoi` come from?)
Java : mandatory passage by Double (or Float) parse, followed by a cast
Java sure has some oddities up it's sleeve