如何对十进制数执行 Integer.parseInt() ?

发布于 2024-08-05 10:24:20 字数 142 浏览 0 评论 0 原文

Java 代码如下:

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

然而,这抛出了 NumberFormatException... 可能出了什么问题?

The Java code is as follows:

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

However this is throwing a NumberFormatException... What could be going wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

格子衫的從容 2024-08-12 10:24:21

使用 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();

Using BigDecimal to get rounding:

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();
八巷 2024-08-12 10:24:21

使用这个

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

use this one

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

萤火眠眠 2024-08-12 10:24:21

假设我们在字符串中取一个整数。

字符串s=“100”;
int i=Integer.parseInt(s);
或者
int i=Integer.valueOf(s);

但是在您的问题中,您尝试更改的数字是整数

字符串 s="10.00";

double d=Double.parseDouble(s);

int i=(int)d;

这样你就可以得到你想要得到的值的答案。

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;

This way you get the answer of the value which you are trying to get it.

天涯沦落人 2024-08-12 10:24:21

使用 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.

岁月打碎记忆 2024-08-12 10:24:21

还可以采用另一种解决方案。

int number = Integer.parseInt(new DecimalFormat("#").format(decimalNumber))  

示例:

Integer.parseInt(new DecimalFormat("#").format(Double.parseDouble("010.021")))  

输出

10

One more solution is possible.

int number = Integer.parseInt(new DecimalFormat("#").format(decimalNumber))  

Example:

Integer.parseInt(new DecimalFormat("#").format(Double.parseDouble("010.021")))  

Output

10
眼眸印温柔 2024-08-12 10:24:20
String s = "0.01";
double d = Double.parseDouble(s);
int i = (int) d;

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

Java 将 double 转换为 int 的方式是通过向零舍入来删除小数分隔符后面的部分。

int i = (int) 0.9999;

i 将为零。

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

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 a float datatype can hold rational numbers.

The way Java casts a double to an int is done by removing the part after the decimal separator by rounding towards zero.

int i = (int) 0.9999;

i will be zero.

写给空气的情书 2024-08-12 10:24:20

0.01 不是一个整数(整数),所以你当然不能将它解析为 1。使用 Double.parseDoubleFloat.parseFloat 代替。

0.01 is not an integer (whole number), so you of course can't parse it as one. Use Double.parseDouble or Float.parseFloat instead.

野稚 2024-08-12 10:24:20

使用,

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

Use,

String s="0.01";
int i= new Double(s).intValue();
仅此而已 2024-08-12 10:24:20
String s="0.01";
int i = Double.valueOf(s).intValue();
String s="0.01";
int i = Double.valueOf(s).intValue();
未蓝澄海的烟 2024-08-12 10:24:20

这种转换在 Java 中实际上非常不直观,

以下面的字符串为例:“100.00”

C:至少自 1971 年以来的一个简单标准库函数 (名称 `atoi` 从哪里来?)

int i = atoi(decimalstring);

Java:强制通过 Double(或 Float)解析,然后是强制转换

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

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?)

int i = atoi(decimalstring);

Java : mandatory passage by Double (or Float) parse, followed by a cast

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

Java sure has some oddities up it's sleeve

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文