1. / this.norm();是`1.`只是语法糖?

时间:2015-03-05 22:25:17

标签: java double

我是Java新手,并不知道如何搜索它。因为谷歌搜索1. double java并没有给我任何令人满意的搜索结果。

我遇到了这段代码:

public Vector normalize() {
    final double inorm = 1. / this.norm();
    return smult(inorm);
}

有人可能会说这个代码过于明确,有一个final局部变量。我认为由于this.norm()无论如何都会返回double1 / this.norm()会产生同样的效果。

1.只是一些语法糖,意味着与1.0相同吗?如果this.norm()返回int并且我写了1而不是1.,会发生不同的事情(例如欧几里德分部)吗?

2 个答案:

答案 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。为了防止这种动态转换,最好坚持使用常见的数字类型。