我是Java新手,并不知道如何搜索它。因为谷歌搜索1. double java
并没有给我任何令人满意的搜索结果。
我遇到了这段代码:
public Vector normalize() {
final double inorm = 1. / this.norm();
return smult(inorm);
}
有人可能会说这个代码过于明确,有一个final
局部变量。我认为由于this.norm()
无论如何都会返回double
,1 / this.norm()
会产生同样的效果。
1.
只是一些语法糖,意味着与1.0
相同吗?如果this.norm()
返回int
并且我写了1
而不是1.
,会发生不同的事情(例如欧几里德分部)吗?
答案 0 :(得分:4)
这是指定双重文字的众多方法之一,没有它1将是一个整数,这意味着你要进行整数除法,而不是双重除法......
System.out.println(1 / 3); // ==> 0 <== Uh oh, integer division
System.out.println(1. / 3); // ==> 0.333333
System.out.println(1.0 / 3); // ==> 0.333333
System.out.println(1d / 3); // ==> 0.333333
System.out.println(1D / 3); // ==> 0.333333
System.out.println( (double)1 / 3 ); // ==> 0.3333333
是语法糖吗?也许不是,在我看来更多的伎俩。我更喜欢1d,因为意图更清晰。
答案 1 :(得分:0)
a)1。等于1.0。这意味着你想用作双人。如果你想使用浮动,你会使用1.0f。如果你想使用整数,你会使用1.最后你会做1L。
b)我会使用1然后你将使用整数但是java会将它转换为double,因为它会检测到除数是一个double。为了防止这种动态转换,最好坚持使用常见的数字类型。