Why is the default type a double?
这是Java语言设计者最好问的问题。他们是唯一知道这个语言设计决策的真正原因的人。但我预计这个推理是以下几点:
他们需要区分两种类型的文字,因为它们实际上意味着从数学角度来看不同的值。
假设他们将“float”作为文字的默认值,请考虑这个例子
// (Hypothetical "java" code ... )
double d = 0.1;
double d2 = 0.1d;
在上文中,d和d2实际上具有不同的值。在第一种情况下,在分配点将低精度浮点值转换为较高精度的双值。但是你不能恢复不存在的精度。
我认为一种语言设计,那两种语言是合法的,意思是不同的东西就是一个BAD的想法…考虑到第一个语句的实际意义与“自然”的含义不同。
通过这样做:
double d = 0.1f;
double d2 = 0.1;
都是合法的,并且意味着不同的事情。但是在第一个声明中,程序员的意图很清楚,第二个声明是“自然”的意思是程序员得到的。在这种情况下:
float f = 0.1f;
float f2 = 0.1; // compilation error!
…编译器拾起不匹配。
I am guessing using floats is the exception and not the rule (using doubles instead) with modern hardware so at some point it would make sense to assume that the user intends 0.1f