乘以浮点值 "possible lossy conversion from double to float"

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

我遇到这个问题,我必须将公里转换为英里。我是一名新手程序员,请多多包涵。

到目前为止,这是我的代码:

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);
    }
}

它给我一个错误提示:

不兼容 types:possible 从 double 到 float 的有损转换。

0.621371 是一个 double 文字,因此 km 值在相乘时提升为 double。将 double 产品存储回 m 的转换可能会丢失数据(doublefloat)。

要将数据保留为 float,请使用 float 文字,并在末尾添加 f

m=km*0.621371f;

通常 double 的结果会很好,所以您也可以将 mkm 的数据类型更改为 double.

您正在尝试将 double 设置为 float 变量

要修复,请更改此行

m=km*0.621371;

m=km*0.621371f;

您需要将常量变量定义为浮点数,因为 km 被读取为浮点数。

final float KM_TO_ML = 0.621371F;
m = km * KM_TO_ML;