在Java中将double转换为无符号整数

我正在尝试在 Java 中将 double 转换为 unsigned int。

使用 unsigned int 我的意思是从 0 到 4294967295 的范围。
int用作载体 - 它可以转换为带有Integer.toUnsignedString.

我不在乎我会得到什么结果

  • 双是NaN
  • 双是Inf-Inf
  • 双精度超出范围:< 0> 4294967295

只要我得到任何结果。

简单的演员表不起作用:

(int) 4294967295d == 2147483647
(int) 2147483648d == 2147483647

所以有问题的范围是2147483648d- 4294967295d

有没有一种快速的方法可以正确覆盖该范围?

tl;dr:在 CI 中会使用(unsigned int) dblValue- 我会在 Java 中使用什么?

回答

4294967295f

那不是一回事。那个浮动不存在。它变得圆润。不要使用浮点数,它们几乎没有意义。它是双重的。

有没有一种快速的方法可以正确覆盖该范围?

一旦你意识到你的问题没有意义并转向双打,是的。转换为 long,转换为 int:

double d = 4294967295.0;
int i = (int) (long) d;
System.out.println(i);
System.out.println(Integer.toUnsignedString(i));
> -1
> 4294967295


以上是在Java中将double转换为无符号整数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>