-->

Multiplying float values “possible lossy conversio

2020-02-07 07:04发布

问题:

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.

回答1:

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;


回答2:

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.



回答3:

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;