当前位置: 首页 > 知识库问答 >
问题:

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

诸葛奇玮
2023-03-14

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

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

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个答案

佟高澹
2023-03-14

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

final float KM_TO_ML = 0.621371F;
m = km * KM_TO_ML;
荣俊
2023-03-14

0.621371是一个doubleliteral,因此乘法时 0.05 double。将 double产品存储回 m将是一种可能丢失数据的转换( 转换为 0.05浮点数)。

若要将数据保留为浮点数,请使用浮点数文字,末尾带有 f

m=km*0.621371f;

通常,结果的双精度值会很好,因此您也可以将 mkm 的数据类型更改为双精度值

游炳
2023-03-14

您正在尝试将双精度值设置为浮点变量

要修复,请更改此行

m=km*0.621371;

m=km*0.621371f;
 类似资料:
  • 问题内容: 我有这个问题,我必须将公里转换成英里。我是一个新手程序员,所以请耐心等待。 到目前为止,这是我的代码: 它给我一个错误,说: 问题答案: 您正在尝试将a 设置为变量 要修复,请更改此行 至

  • 在我的计算机科学课程中,我们正在研究浮点数以及它们在内存中是如何表示的。我已经理解了它们在内存中是如何表示的(尾数/有效数、指数及其偏差、符号位),我也理解了浮点是如何相互添加和减去的(反规格化和所有那些有趣的东西)。然而,在翻阅一些学习问题时,我注意到一些我无法解释的东西。 当一个不能精确表示的浮点数加到自己身上几次时,答案比我们在数学上预期的要低,但当同一个浮点数乘以一个整数时,答案就精确地得

  • 问题内容: 如何使用正则表达式从字符串中提取双精度值。 问题答案: 这是简单的方法。请勿将regex用于内置类型。

  • 问题内容: 是否有比浮点精度更好的数据类型? 问题答案: 小数数据类型 与基于硬件的二进制浮点数不同,十进制模块具有用户可更改的精度(默认为28位),可以与给定问题所需的精度一样大。 如果您对性能问题感到困扰,请查看GMPY

  • 问题内容: 如何使用正则表达式从字符串中提取双精度值。 问题答案: 是简单的方法。请勿将regex用于内置类型。

  • 为什么当我尝试编译以下代码时会收到此错误消息? 或 不兼容的类型:从double到float的可能有损转换 我溢出来了吗?我想了解这背后的理论。提前感谢。