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.
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;
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.
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;
来源:https://stackoverflow.com/questions/28484379/multiplying-float-values-possible-lossy-conversion-from-double-to-float