Oreo
Oreo

Reputation: 33

Multiplying float values "possible lossy conversion from double to float"

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

Answers (3)

Sigismundus
Sigismundus

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

ControlAltDel
ControlAltDel

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

rgettman
rgettman

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

Related Questions