gpt4 book ai didi

java - 线程 "main"java.lang.NumberFormatException : Infinite or NaN 中的异常

转载 作者:行者123 更新时间:2023-11-30 07:19:50 29 4
gpt4 key购买 nike

你们能帮我解决这个问题吗..我正在尝试获取大十进制数 (BigDecimal) 的日志,但我收到以下异常错误消息:

Exception in thread "main" java.lang.NumberFormatException: Infinite or NaN

这是我的:

BigDecimal num = new BigDecimal(totalDocuments/hitDocuments);
BigDecimal idf = new BigDecimal(Math.log(num.doubleValue()));
BigDecimal termF = new BigDecimal(terms.get(j).getTermFreq());
BigDecimal tfIdf = new BigDecimal(termF.doubleValue() * idf.doubleValue());
terms.get(j).setTfIdf(tfIdf.doubleValue());

我在第二行得到异常;我该如何解决这个问题?非常感谢你的好意。哦,顺便说一句,我正在尝试计算文本文件的“tf-idf”。

完整代码如下

File[] corpus = new File("files//").listFiles();int totalDocuments = (corpus.length) - 1;//-1 表示可疑文档。

    int hitDocuments = 1;
for (int i = 0; i < corpus.length; i++) {
ArrayList<String> corpusWords = getWords(corpus[i].getAbsolutePath());
for (int j = 0; j < terms.size(); j++) {
for (int k = 0; k < corpusWords.size(); k++) {
if (terms.get(j).getTerm().equals(corpusWords.get(k))) {
hitDocuments++;
}
}
//Update the tf-idf
BigDecimal num = new BigDecimal(totalDocuments/hitDocuments);
BigDecimal idf = new BigDecimal(Math.log(num.doubleValue()));
BigDecimal termF = new BigDecimal(terms.get(j).getTermFreq());
BigDecimal tfIdf = new BigDecimal(termF.doubleValue() * idf.doubleValue());
terms.get(j).setTfIdf(tfIdf.doubleValue());
}
}

`

最佳答案

看起来 hitDocuments 或 totalDocuments(或两者)是 Double,而 hitDocuments 是 0.0。 anything/0.0 = Double.Infinity(如果 totalDocuments 为 0.0,则为 NaN)。无法获取任何一个的日志。

关于java - 线程 "main"java.lang.NumberFormatException : Infinite or NaN 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14371003/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com