我正在尝试将双变量乘以时间。例如,我有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)这是错误的。我无法理解为什么。
我感谢你的时间。 提前谢谢
答案 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;