拆分和倍增双重会给我错误的价值

时间:2018-05-01 12:17:57

标签: java split double

我正在尝试将双变量乘以时间。例如,我有2小时30分钟。因此,我必须遵循的程序是将2乘以15小时,然后将30分钟除以60即小时的分钟,然后将其乘以15.这是我的代码:

        Double water_time = Double.valueOf(jTextField1.getText());
        String[] seperated = String.valueOf(water_time).split("\\.");
        int[] intseperated = new int[2];
        intseperated[0] = Integer.parseInt(seperated[0]);
        intseperated[1] = Integer.parseInt(seperated[1]);
        int price1 = intseperated[0] * propertiesFile.multiply_water;
        double price2 = (intseperated[1] * propertiesFile.multiply_water) / 60.0D;
        double price = (price1 + price2);

我的问题是当iam类型0.10我得到(0.25)这是正确的值但是当我输入0.11时我得到(2.75)这是错误的。我无法理解为什么。

我感谢你的时间。  提前谢谢

2 个答案:

答案 0 :(得分:1)

问题在于你宣布Double water_time的方式。

0.10变为Double 0.1所以你实际上将1除以4,并以数学方式得到INCORRECT 0.25

0.11如您所料,变为双0.11,然后将11除以4,并在数学上将CORRECT 2.75

要修复 - 首先拆分String,然后将值转换为Doubles并相应地计算。

工作代码:

    String[] seperated = jTextField1.getText().split("\\.");
    int[] intseperated = new int[2];
    intseperated[0] = Integer.parseInt(seperated[0]);
    intseperated[1] = Integer.parseInt(seperated[1]);
    int price1 = intseperated[0] * propertiesFile.multiply_water;
    double price2 = (intseperated[1] * propertiesFile.multiply_water) / 60.0D;
    double price = (price1 + price2);

答案 1 :(得分:0)

据我所知,你想把十进制值除以60再乘以15.但你所做的是先将15乘以,然后将整个答案除以60。

double price2 = (intseperated[1] / 60.0D) * propertiesFile.multiply_water;