【发布时间】:2015-07-21 06:29:51
【问题描述】:
我有两个字符串需要比较,但我想有意义地比较它们,以便当它们是数字时,应该比较它们的实际值。到目前为止,我已经尝试了以下解决方案:
String str1 = "-0.6";
String str2 = "-.6";
if (NumberUtils.isNumber(str1) && NumberUtils.isNumber(str2)) {
Number num1 = NumberUtils.createNumber(str1);
Number num2 = NumberUtils.createNumber(str2);
System.out.println(num1.equals(num2));
} else {
System.out.println(str1.equals(str2));
}
这有效,因为两者都转换为doubles。
但这在这种情况下不起作用:
String str1 = "6";
String str2 = "6.0";
有什么简单的方法可以做到这一点,还是我必须编写自己的比较器?
【问题讨论】:
-
当一个字符串不是某种数字时你会怎么做?
-
你不能让
createNumber()方法总是返回Double的数字吗? -
这意味着字符串不适用于诸如此类的数字比较。您应该使用 convrting to double 并按照您提到的那样比较它们。
-
是否可以使用
Number num1 = 0. + NumberUtils.createNumber(str1);之类的方法解决?num2也是如此。
标签: java string numbers double long-integer