在java中将双精度整数转换为无符号整数

lzfw57am  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(635)

我试图在java中将double转换成无符号int。
对于无符号int,我的意思是从0到4294967295的范围。
我用 int 作为载体-它可以转换成一个字符串与 Integer.toUnsignedString .
我不在乎我得到什么结果如果
双人房是 NaN .
双人房是 Inf 或者 -Inf 双人床超出范围: < 0 或者 > 4294967295 .
只要我有结果。
简单的强制转换不起作用:

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

所以有问题的范围是 2147483648d - 4294967295d .
有没有一种快速的方法来正确覆盖这个范围?
热释光;医生:在c语言中我会用 (unsigned int) dblValue -在java中我会用什么来实现这一点?

oknwwptz

oknwwptz1#

4294967295f 那不是一件事。浮动不存在。它变圆了。不要用浮子,它们几乎没有意义。它起双重作用。
有没有一种快速的方法来正确覆盖这个范围?
一旦你意识到你的问题毫无意义,就换成双打,是的。转换为long,转换为int:

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

相关问题