小编典典

我的Java程序中“可能会失去精度”

java

我是Java新手。我写了以下代码:

import java.io.*;
import java.lang.*;

public class distravel
{
    public static void main(String args[])
    {
        String a1,a2,a3;
        int x=2;
        float d,u,a,t;
         //d=distance travelled,u=initial velocity,a=acceleration,t=timeinterval

        try
        {
            InputStreamReader read=new InputStreamReader(System.in);
            BufferedReader buff=new BufferedReader(read);

            System.out.print("Enter the INTIAL VELOCITY:");
            a1=buff.readLine();
            u=Float.parseFloat(a1);
            System.out.print("Enter the ACCELERATION:");
            a2=buff.readLine();
            a=Float.parseFloat(a2);
            System.out.print("Enter the TIME:");
            a3=buff.readLine();
            t=Float.parseFloat(a3);

            d=((u*t)+a*Math.pow(t,x))/2F;

            System.out.print("The total DISTANCE TRAVELLED:"+d);
        }
        catch(Exception e)
        {}
    }
}

我收到此错误:

distravel.java28:可能的精度损失
                                   发现:双
                                   必需的:浮动的
                                   d =(((u * t)+ a * Math.pow(t,x))/ 2F;
                                                            ^

我该如何解决?


阅读 184

收藏
2020-11-16

共1个答案

小编典典

d=((ut)+aMath.pow(t,x))/2F;

应该

d=(float)((u*t)+a*Math.pow(t,x))/2F;

或声明ddouble作为格雷厄姆建议。

2020-11-16