Java:解析 Long 抛出错误
Java : Parsing Long throws error
我正在使用 MongoDb。我有一个名为 'counter' 的集合。我正在尝试检索字段 'seq' 的值,该值在 MongoDb 中存储为双精度值。
首先,'seq' 字段的值递增 1,效果很好。如果我在将 seq 的值转换为字符串之后打印它的值,它就可以正常工作。它 returns 一个字符串值。
然而,当我尝试使用 Long.parseLong() 或 Long.valueOf() 函数将 1.0 等字符串值解析为 Long 时,它会抛出错误。
SEVERE: The RuntimeException could not be mapped to a response,
re-throwing to the HTTP container java.lang.NumberFormatException: For
input string: "47.0"
public long getNextSeq(){
DBCollection coll = getCollection(getDb(DB_NAME), "counters");
coll.update(new BasicDBObject().append("_id","blogId"), new BasicDBObject().append("$inc",new BasicDBObject("seq",1)));
DBObject seqObj = coll.findOne();
String seqStr = seqObj.get("seq").toString();
long seq = Long.valueOf(seqStr);
return seq;
}
所以我想知道为什么我不能把那个47.0转换成long,有什么解决办法。
注意:
seqObj.get("seq")
会产生 BSONObject。 (MongoDb查询)
我通常会做以下事情:
long l = ((Number) seqObj.get("seq")).longValue();
我正在使用 MongoDb。我有一个名为 'counter' 的集合。我正在尝试检索字段 'seq' 的值,该值在 MongoDb 中存储为双精度值。
首先,'seq' 字段的值递增 1,效果很好。如果我在将 seq 的值转换为字符串之后打印它的值,它就可以正常工作。它 returns 一个字符串值。
然而,当我尝试使用 Long.parseLong() 或 Long.valueOf() 函数将 1.0 等字符串值解析为 Long 时,它会抛出错误。
SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container java.lang.NumberFormatException: For input string: "47.0"
public long getNextSeq(){
DBCollection coll = getCollection(getDb(DB_NAME), "counters");
coll.update(new BasicDBObject().append("_id","blogId"), new BasicDBObject().append("$inc",new BasicDBObject("seq",1)));
DBObject seqObj = coll.findOne();
String seqStr = seqObj.get("seq").toString();
long seq = Long.valueOf(seqStr);
return seq;
}
所以我想知道为什么我不能把那个47.0转换成long,有什么解决办法。
注意:
seqObj.get("seq")
会产生 BSONObject。 (MongoDb查询)
我通常会做以下事情:
long l = ((Number) seqObj.get("seq")).longValue();