В Java 6 есть только два метода Double#valueOf: Double#valueOf(double)
и Double#valueOf(String)
.
1 - Метод Witch вызывается, когда я выполняю Double#valueOf(float)
?
Согласно Javadoc, это похоже на Double#valueOf(String)
, но Eclipse связывается с Double#valueOf(double)
.
2-Почему такие разные?
Вызов Double.valueOf
с плавающей запятой вокруг результата:
System.out.println(Double.valueOf(0.63F)); // displays 0.6299999952316284
Тогда как
System.out.println(Double.valueOf(String.valueOf(0.63F))); // displays 0.63
Извлечение из javadoc (http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html#valueOf(java.lang.String)):
the float literal 0.1f is equal to the double value 0.10000000149011612
и
строка в параметре is regarded as representing an exact decimal value in the usual "computerized scientific notation" or as an exact hexadecimal value; this exact numerical value is then conceptually converted to an "infinitely precise" binary value that is then rounded to type double by the usual round-to-nearest rule of IEEE 754 floating-point arithmetic