给出以下Java代码:
String columnValue = "188237574385834583453453635";
columnValue =(Long.parseLong(columnValue)>Long.MAX_VALUE?"0":columnValue);
Run Code Online (Sandbox Code Playgroud)
它会抛出,java.lang.NumberFormatException因为输入值超出了Long最大值.但是,有一种简单的方法可以检测"字符串"类型中的数字是否Long超出了使用try catch解决方案的最大值?
一种懒惰的方式可以是使用BigInteger.
BigInteger a = new BigInteger("188237574385834583453453635");
BigInteger b = BigInteger.valueOf(Long.MAX_VALUE);
System.out.println("a > Long.MAX_VALUE is : " + (a.compareTo(b) > 0 ? "true" : "false"));
Run Code Online (Sandbox Code Playgroud)
如果性能很重要,则必须测试更多解决方案.
@SotiriosDelimanolis的想法也很好:
提取parseLong的源代码,而不是抛出异常,返回一个布尔值.
throw代码中还有很多,有些用于格式,有些用于溢出,你必须选择正确的.
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |