Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java int cast返回0_Java - Fatal编程技术网

Java int cast返回0

Java int cast返回0,java,Java,我有以下代码: int i = (int) 0.72; System.out.println(i); 这将产生以下输出: 0 我可以想象变量I的值应该是1(因为0.72>0.5=>1),为什么不是这样呢 (我想,当转换为int时,它只是将逗号后的十进制数字切掉,而不考虑取整;所以我可能必须自己处理这个问题?因为当您将double转换为int时,小数部分会被截断 更新Math.round将给出所需的输出,而不是Math.ceil: System.out.println(Math.round(

我有以下代码:

int i = (int) 0.72;
System.out.println(i);
这将产生以下输出:

0
我可以想象变量
I
的值应该是
1
(因为0.72>0.5=>1),为什么不是这样呢


(我想,当转换为int时,它只是将逗号后的十进制数字切掉,而不考虑取整;所以我可能必须自己处理这个问题?

因为当您将double转换为int时,小数部分会被截断

更新
Math.round
将给出所需的输出,而不是
Math.ceil

 System.out.println(Math.round(0.72));
// will output 1

 System.out.println(Math.round(0.20));
// will output 0
您可以使用
Math.ceil

System.out.println(Math.ceil(0.72));
// will output 1
 System.out.println(Math.ceil(0.20));
// will output 1

强制转换为int隐式将删除小数部分。这就是为什么会得到0,因为0之后的任何内容都会被删除(在您的例子中是72)。如果您想进行四舍五入,请查看

是否正确,将整数转换为整数只会截断数字。您可以这样做以获得您想要的结果:

int i = (int)Math.round(0.72);
System.out.println(i);

例如,这将打印0.72的1和0.28的0。

显式转换将浮点/双精度值转换为int变量(这将丢弃小数部分)

Java不会像我们一样舍入数字。它只是截断小数部分。
如果要对数字进行四舍五入,请使用java.lang.Math将
double
转换为
int
截断数字的非整数部分


要按照您所描述的对数字进行四舍五入,请将

作为一个完整的Java初学者,以防我的经验对某人有用,我犯了以下错误:

intx=(int)Math.random()*10

。。。这将始终将x设置为0。相反,我应该做
intx=(int)(Math.random()*10)


Java不知道有多少具体的错误,但我会把它扔掉,以防任何对此感到困惑的人偶然发现这个问题。

有人需要截断;其他需要舍入。只有一条规则可以应用于缩小转换,这一条规则是截断。您想要使用的是
Math.round()
这篇文章可以帮助您这里要提到的是,
ceil
将始终向上舍入,而不仅仅是当
=.5