Is the parameter in the method call the correct type?
Yes—so no conversion is required.
Here is a program where the supplied parameter type does not match the required type:
class CosEg2
{
public static void main ( String arg[] )
{
int z = 0;
System.out.println( "cos is:" + Math.cos( z ) );
}
}
In this case, the 32 bit value in x can be converted to the required 64 bit
value without loss of information, so the compiler does it automatically.
Here is another case:
class CosEg3
{
public static void main ( String arg[] )
{
long w = 0;
System.out.println( "cos is:" + Math.cos( w ) );
}
}
Data of type long can be converted to type double, but some
precision may be lost.
In this case, also, the compiler does the conversion automatically.
(In this particular case, no precision is lost because 0 can be represented
accurately in both types.
But in general, there may be loss of precision in converting from long
to double.)
(Thought question:) Do you think that the following will work:
class cosEg4
{
public static void main ( String arg[] )
{
long w = 0;
System.out.println( "cos is:" + Math.cos( (double)w ) );
}
}