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();