由于性能问题,java双精度字符串替代方案
需要帮助寻找替代方案。这是我在环境中运行的当前代码。看起来它影响了我的应用程序的性能,速度不够快。我正在考虑试一试的方法。它会起作用吗?或者有更好的替代方案可以建议您将double转换为字符串
public static String formatDoubleValue(String string) {
if (string == null)
return null;
if (string.matches("-?\\d+(\\.\\d+)")) {
//System.out.println(string + " is a Double");
Double dVal = Double.parseDouble(string);
//System.out.println("Formatted value: " + NUM_FORMAT.format(dVal));
return NUM_FORMAT.format(dVal);
} else {
//System.out.println(string + " is not a Double");
return string;
}
}
public static String formatDoubleValuesixdigit(String string) {
if (string == null)
return null;
if (string.matches("-?\\d+(\\.\\d+)")) {
//System.out.println(string + " is a Double");
Double dVal = Double.parseDouble(string);
//System.out.println("Formatted value: " + NUM_FORMAT.format(dVal));
return NUM_FORMAT_SIXDIGIT.format(dVal);
} else {
//System.out.println(string + " is not a Double");
return string;
}
}
# 1 楼答案
我认为
Scanner
超过String
可能会给你带来更好的表现,比如及
# 2 楼答案
很难提出替代方案,因为我们不知道您希望数字的格式
但是,每次执行这一行时:
您正在重新编译正则表达式。这将相当缓慢
编译一次,存储在字段中:
然后在以下条件下使用: