Java Math.ceil(x/50d)-什么是;50d“;
我发现了这个代码片段,想知道Java Math.ceil(x/50d)-什么是;50d“;,java,math,ceil,Java,Math,Ceil,我发现了这个代码片段,想知道50d到底是什么意思?我一直在网上搜索,但找不到任何有用的东西 下面是完整的代码片段: public int CalculateMinimumDiameterFilter(){ CalculateFilterAreaRequirement(); double val1 = filterAreaRequirement /Math.PI; double val2 = Math.sqrt(val1); double val3 = val2 *
50d
到底是什么意思?我一直在网上搜索,但找不到任何有用的东西
下面是完整的代码片段:
public int CalculateMinimumDiameterFilter(){
CalculateFilterAreaRequirement();
double val1 = filterAreaRequirement /Math.PI;
double val2 = Math.sqrt(val1);
double val3 = val2 * 2;
int val4 = (int)Math.round(val3 * 1000);
minimumDiameterFilter = (int) (Math.ceil(val4 / 50d) * 50);
return minimumDiameterFilter;
}
有人能给我解释一下
50d
的实际作用吗?后缀d
强制它是double
文本,而不是int
文本。50d
的意思是带有double
类型的数字50这是必需的,因为
val4
作为int
,除以50
作为int
,将返回一个int
,Java将把它四舍五入到地板上,这不是预期的。d
是double
的缩写。标准数字50
没有任何小数点(即:50.0
)只是一个int
。您需要将d
添加到普通50
中,以说明您希望将其表示为double
这是一个明确的数字声明,即JLS中定义的double
如果浮点文字的后缀为ASCII字母F或F,则它的类型为float;否则,它的类型是double,并且可以选择使用ASCII字母D或D作为后缀
你可以看一看,这会给你一个很好的解释。
50d
在这种情况下,表示50不是整数(int
)类型,而不是double(50.0)类型
我们不仅可以做50d
。你也可能会看到人们写这样的东西:
long serialNo = 1234567L;
在这种情况下,数字后面的L
表示我想让serialNo的类型为long
。如果不放置L
,则默认的整数类型将是整数(int
)
编写代码的人不必编写
50d
,也可以将其编写为50.0。在这种情况下,这意味着同样的事情,因为默认情况下,Java中的浮点值是双精度的。除非后缀另有规定(如l
,d
,f
等),否则整数为int
例子:
50d
将50定义为双精度它将50定义为双精度。50f将是浮点数。总的来说,使用d
将数字标记为双精度不是很常见。你也可以只写50.0
,每个人都知道你的意思。但是,请记住,如果您确实想要浮点而不是双精度浮点,则需要编写50.0f
。这就是为什么每个人都更习惯于看f
,而不是d
:)人们之所以对你投反对票,是因为他们认为你之前没有做过研究。另一方面,特别是对于新手来说,以前的研究可能很难做——如果你不知道文字;它们的语法。。。你应该如何找到关于他们的信息。长话短说:+1来自我。。。
double d1 = 50.0; //ok! 50.0 will be double by default
double d2 = 50.0d; //ok! 50.0 is already in double, no harm putting a "d"
double d3 = 50d; //ok! 50 becomes a double
double d4 = 50; //ok! trying to store int into double (no loss of precision)
double d5 = 50f; //ok! trying to store float into double (no loss of precision)
float f1 = 0.1f; //ok!
float f2 = 0.0; //not ok! trying to store double into float (loss of precision)
float f3 = 50d; //not ok! trying to store double into float (loss of precision)