我不明白为什么在Java中,Math.log(x)与1.0 * Math.log(x)不一样
这里第1列是nom,第2列是denom,第3列是1.0 * Math.log(nom / denom),第4列是Math.log(nom / denom)
109053.0, 25510117, -0.0, -5.454996394976426
109053.0, 25510117, -0.0, -5.454996394976426
double meu = 1.0;
/**
* Returns the probability of the unigram in the language model
* @param term
* @return
*/
public double unigramProb(String term){
double count = 1.0*unigram.count(term);
double unigrampro = count/(1.0*unigram.termCount());
System.out.println(count + ", " + unigram.termCount() + ", " + meu*Math.log(unigrampro) + ", " + Math.log(unigrampro));
return Math.log(unigrampro);
// return meu*Math.log(unigrampro);
}
为什么第3列不能等于第4列?我使用double代表所有数字。
答案 0 :(得分:1)
private static double meu = 1.0;
不敢相信我花了45分钟。谢谢大家。