Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 乘以浮点值“从双精度到浮点的可能有损转换”_Java_Floating Point Conversion - Fatal编程技术网

Java 乘以浮点值“从双精度到浮点的可能有损转换”

Java 乘以浮点值“从双精度到浮点的可能有损转换”,java,floating-point-conversion,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.prin

我有一个问题,我必须把公里转换成英里。我是一个新手程序员,所以请容忍我

以下是我目前的代码:

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. 值0.621371是双精度文字,因此相乘时km值将提升为双精度。将double乘积存储回m将是一种转换,可能会丢失double到float的数据

要将数据保持为浮点值,请使用浮点文本,末尾带有f:

m=km*0.621371f;
通常情况下,结果的双精度是可以接受的,因此您也可以将m和km的数据类型更改为双精度。

值0.621371是双精度文字,因此在相乘时km值将提升为双精度。将double乘积存储回m将是一种转换,可能会丢失double到float的数据

要将数据保持为浮点值,请使用浮点文本,末尾带有f:

m=km*0.621371f;
通常情况下,结果的double就可以了,因此您也可以将m和km的数据类型更改为double。

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

若要修复,请更改此行

m=km*0.621371;

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

若要修复,请更改此行

m=km*0.621371;


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

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

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

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

提示:浮点数默认为双精度类型。如果你想在末尾使用f,比如0.621371fI,我猜你的意思是有损转换?你试过用谷歌搜索错误吗?除了从答案中学到的内容外,还要了解格式化和编码约定对于与其他程序员(包括将来阅读代码的程序员)的交流非常重要。类名应以大写字母开头,代码块应正确缩进。提示:浮点数字默认为双精度类型。如果要使用浮点,请在末尾使用f,如0.621371fI,我猜您的意思是有损转换?你试过用谷歌搜索错误吗?除了从答案中学到的内容外,还要了解格式化和编码约定对于与其他程序员(包括将来阅读代码的程序员)的交流非常重要。类名应该以大写字母开头,代码块应该适当缩进。考虑使用魔术数字,这是一个糟糕的编程实践。只看这个代码,你就不能知道0.621371是什么意思?它被认为是一个糟糕的编程实践,使用魔术数字。仅通过查看此代码,您无法了解0.621371的含义?