将浮点值乘以“从double到float的可能有损转换”

时间:2015-02-12 17:50:39

标签: java floating-point-conversion

我有这个问题,我必须将千米转换成里程。我是新手程序员,所以请耐心等待。

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

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

它给我一个错误说:

Incompatible types:possible lossy conversion from double to float.

3 个答案:

答案 0 :(得分:2)

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

要修复,请更改此行

m=km*0.621371;

m=km*0.621371f;

答案 1 :(得分:1)

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

要将数据保持为float,请使用float字面值,最后加f

m=km*0.621371f;

通常结果的double就可以了,所以您也可以将mkm的数据类型更改为double

答案 2 :(得分:1)

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

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