Java 从英寸转换为厘米时会失去精度,反之亦然
当我从Java 从英寸转换为厘米时会失去精度,反之亦然,java,double,precision,Java,Double,Precision,当我从英寸转换为厘米,再从厘米转换为英寸时,我实际上失去了精度值 //英寸到厘米 public static String convertInchesToCentimeter(String inches) { double in = 0; try { if (inches != null && inches.trim().length() != 0) { in = Double.parseDouble(inches) / 0.39370;
英寸转换为厘米,再从厘米转换为英寸时,我实际上失去了精度值
//英寸到厘米
public static String convertInchesToCentimeter(String inches) {
double in = 0;
try {
if (inches != null && inches.trim().length() != 0) { in = Double.parseDouble(inches) / 0.39370;
}
} catch (NumberFormatException nfx) {
System.err.println("Invalid input.");
}
return String.valueOf( in );
}
//厘米到英寸
public static double convertCentiToInch(double d) {
double centiToInch = 0;
if (String.valueOf(d) != null && String.valueOf(d).trim().length() != 0) {
centiToInch = d * 0.39;
}
return centiToInch;
}
如果我输入45,它将显示44.58
。我不知道确切的问题发生在哪里?一个函数有0.39370,另一个函数有0.39
确切数字为1英寸,为2.54厘米。一个可能的问题是,您在一个功能中使用了0.39370
,但在另一个功能中使用了.39
。我建议使用精确值2.54
厘米/英寸
即使有这种变化,浮点数也往往不精确 String.valueOf(d)!=空值
?它永远不会返回null
。检查结果的长度
同样毫无意义!如果你不能忍受数字中的这些错误,请使用BigDecimal
。也不要使用缩短的数字,如0.39
,而是使用1/25.4
。难以置信的是,这样的问题会在另一双眼睛里出现帖子,我想:我刚刚修复了一些代码中的一个错误,这是一个比这更糟糕的错误;-)