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
。难以置信的是,这样的问题会在另一双眼睛里出现帖子,我想:我刚刚修复了一些代码中的一个错误,这是一个比这更糟糕的错误;-)