Java中版本的比较

我有一个比较Eclipse版本的函数。我们对当前的 Eclipse IDE 进行子字符串处理(例如,如果当前版本是 4.7.10,则该函数将返回 4.7)

我的问题是现在的当前版本是4.10。Java在比较BigDecimal时所做的是删除尾随零。

如何使 4.10 大于 4.5?

谢谢!


江户川乱折腾
浏览 89回答 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);        }    }}如果我正确理解您的问题,这是一个非常快速的粗略解决方案 - 我想您需要扩展它以满足您的需求,但这个想法仍然存在。如果版本仍不是,请将版本转换为字符串。按点拆分,您最终会得到两个部分 - 例如第一部分(4)和第二部分(10)。比较第一部分(因为它是字符串,因此需要将其解析为整数)。如果第一部分相同,请比较第二部分(您还需要解析它)。如果您使用的是 BigDecimal,并且想要转换为 String 并保留尾随零,请尝试以下操作:double value = 4.10;//convert double to BigDecimalBigDecimal bigDecimalValue = BigDecimal.valueOf(value);BigDecimal tempValue = bigDecimalValue.setScale(2, RoundingMode.CEILING);//convert to StringSystem.out.println(tempValue.toPlainString()); //5.40然后按照上面的字符串所述继续操作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java