将浮点值乘以“可能有损转换从double到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); } } 

它给我一个错误说:

 不兼容的类型:可能从double到float的有损转换。 

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

要修复,请更改此行

 m=km*0.621371; 

 m=km*0.621371f; 

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

要将数据保持为float ,请使用float literal,最后使用f

 m=km*0.621371f; 

通常情况下,结果的double就可以了,因此您也可以将mkm的数据类型更改为double

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

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