java版本比较器小数点后3位
您好,我正在尝试比较手机设备的版本号。如果版本为4.3.2,我的程序会崩溃,所以我实现了十进制格式,但现在它只是将我的数字从4.3.2四舍五入到4.3,但是如果版本号为4.2之类的话,程序就完全可以了。我如何修复我的比较器,使其能够接受3个小数而不会崩溃,同时仍在工作2个小数
@Override
public int compare(InventoryCardViewModel lhs, InventoryCardViewModel rhs) {
Phone lhp = phoneDataSource.getPhoneByDeviceID(lhs.getPhoneDeviceID.getValue());
Phone rhp = phoneDataSource.getPhoneByDeviceID(rhs.getPhoneDeviceID.getValue());
if(!lhp.versionNumber.equals(rhp.versionNumber)) {
DecimalFormat df = new DecimalFormat("#.#.#", new DecimalFormatSymbols(new Locale("en_US")));
try {
lhp.versionNumber = String.valueOf(df.parse(lhp.versionNumber).doubleValue());
rhp.versionNumber = String.valueOf(df.parse(lhp.versionNumber).doubleValue());
} catch (ParseException e) {
e.printStackTrace();
}
if (Double.valueOf(lhp.versionNumber) > Double.valueOf(rhp.versionNumber)) {
return -1;
} else {
return 1;
}
# 1 楼答案
正如我在评论中提到的,您不能在这里使用
DecimalFormat
,因为Java decimal类型不支持任意数量的小数(原语类型也不支持任意精度)。相反,我将在\\.
上拆分,然后使用迭代来测试生成的令牌。大概# 2 楼答案