为什么双倍宽度= 50/110000; 输出是0.000000000000000?

Den*_* Do 9 java

这是我的代码:

double width = 50/110000;
System.out.println("width ori is "+width );
Run Code Online (Sandbox Code Playgroud)

输出是: 0.00000000000

怎么了 ?预期的产出必须是4.5454545454545455E-4

任何人都可以向我解释原因吗?

Ale*_* C. 37

因为你要划分两个整数,所以它只取整数部分(整数除法).

在计算机程序中划分整数需要特别小心.一些编程语言,处理整数除法(即通过给出整数商作为答案).所以答案是整数.

例子 :

In real life                  In Java

4/3  = 1.33333                4/3  = 1
25/12 = 2.083333              25/12 = 2
9/2 = 4.5                     9/2 = 4
50/110000 = 0.000454545       50/110000 = 0
Run Code Online (Sandbox Code Playgroud)

您可以使用其中一个(或两个但实际上没用)double来避免这种情况:

double width = (double)50/110000;
double width = 50d/110000;
double width = 50.0/110000;
Run Code Online (Sandbox Code Playgroud)

  • 2分钟?14赞成?根据我的计算,下一分钟你将有22个upvotes. (12认同)
  • 另外2个赞成票,我是一个出色的科学家. (2认同)
  • @ZouZou:这些例子仍然有些误导,因为它们给人的印象是中间的浮点结果.没有.Java(以及大多数其他语言)中的整数除法以一种从不涉及浮点的方式工作. (2认同)