有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java版本比较

我有一个比较Eclipse版本的函数。 我们将当前EclipseIDE作为子字符串(例如,如果当前版本为4.7.10,则函数将返回4.7)

我的问题是目前的版本是4.10。Java在比较BigDecimal时会删除尾随的零

如何得到4.10将大于4.5的值

谢谢大家!


共 (1) 个答案

  1. # 1 楼答案

    下面是一些让你开始的东西——非常简单:

    public class Main {
        public static void main(String[] args)
        {
    
            String version1 = "4.10";
            String version2 = "4.5";
    
            compareVersions(version1, version2);
        }
    
        private static void compareVersions(String v1, String v2) {
            String[] versionSplit1 = v1.split("\\.");
            String[] versionSplit2 = v2.split("\\.");
            if (versionSplit1[0].equals(versionSplit2[0])) {
                if (Integer.parseInt(versionSplit1[1]) > (Integer.parseInt(versionSplit2[1]))) {
                    System.out.println(v1 + " is bigger than " + v2);
                } else if (Integer.parseInt(versionSplit1[1]) == (Integer.parseInt(versionSplit2[1]))){
                    System.out.println(v1 + " is equal to " + v2);
                } else {
                    System.out.println(v2 +  " is bigger than " + v1);
                }
            } else if (Integer.parseInt(versionSplit1[0]) > Integer.parseInt(versionSplit2[0])) {
                System.out.println(v1 + " is bigger than " + v2);
            } else {
                System.out.println(v2 + " is bigger than " + v1);
            }
        }
    }
    

    如果我正确理解了你的问题,这里有一个非常简单的解决方案——我想你需要扩展它以满足你的需求,但这个想法仍然存在

    1. 如果仍然没有,请将您的版本转换为字符串
    2. 按点分割,你会得到两个部分——例如第一部分(4)和第二部分(10)
    3. 比较第一部分(因为它是字符串,所以需要将其解析为整数)。如果第一部分是相同的,比较第二部分(你也需要解析它)

    如果您使用的是BigDecimal,并且希望转换为字符串并保留尾随的零,请尝试以下操作:

    double value = 4.10;
    //convert double to BigDecimal
    BigDecimal bigDecimalValue = BigDecimal.valueOf(value);
    BigDecimal tempValue = bigDecimalValue.setScale(2, RoundingMode.CEILING);
    //convert to String
    System.out.println(tempValue.toPlainString()); //5.40
    

    然后按照上面的字符串进行操作