Reputation: 33
I have this problem wherein I have to convert kilometers into miles. I'm a novice programmer so bear with me.
Here's my code so far:
import java.util.Scanner;
public class problem1 {
public static void main (String args[]) {
float m;
float km;
Scanner input=new Scanner(System.in);
System.out.print("Please enter a distance in kilometers:");
km=input.nextFloat();
m=km*0.621371;
System.out.println("This is equal to: "+m);
}
}
It gives me an error saying:
Incompatible types:possible lossy conversion from double to float.
Upvotes: 1
Views: 5686
Reputation: 625
You need to define constant variable as a float, since km is read as a float.
final float KM_TO_ML = 0.621371F;
m = km * KM_TO_ML;
Upvotes: 1
Reputation: 35096
You are trying to set a double
to a float
variable
To fix, change this line
m=km*0.621371;
to
m=km*0.621371f;
Upvotes: 3
Reputation: 178293
The value 0.621371
is a double
literal, so the km
values is promoted to double
when multiplied. Storing the double
product back to m
would be a conversion that could lose data (double
to float
).
To keep the data as a float
, use a float
literal, with a f
on the end:
m=km*0.621371f;
Normally a double
for the results would be just fine, so you could also just change the datatypes of m
and km
to double
.
Upvotes: 1