即使这些数字不是无穷大,两个double的总和也是无穷大.代码如下.
entropy += (probs.get(key)* (Math.log(probs.get(key)) / Math.log(2.0)));
if(entropy == Double.POSITIVE_INFINITY || entropy == Double.NEGATIVE_INFINITY){
System.out.println("Prob:"+probs.get(key));
System.out.println("base 10: "+Math.log(probs.get(key)));
System.out.println("base 2: "+Math.log(2.0));
System.out.println("result: "+(probs.get(key)*(Math.log(probs.get(key))) / Math.log(2.0)));
System.out.println("entropy before sum "+temp);
break;
}`
Run Code Online (Sandbox Code Playgroud)
结果是:
Prob:1.0476603084695572E305
base 10: 702.3350127634005
base 2: 0.6931471805599453
result: 1.0615472972511642E308
entropy before sum: 1.246498306457423E308
Run Code Online (Sandbox Code Playgroud)
那怎么可能总和
result + entropy = 1.0615472972511642E308 + 1.246498306457423E308
= INFINITY
我想创建一个包含"\ x"的字符串,但我得到了
invalid \x escape
Run Code Online (Sandbox Code Playgroud)
错误.
a = '\x'+''.join(lstDES[100][:2])+'\x'+''.join(lstDES[100][2:])
Run Code Online (Sandbox Code Playgroud)
我该如何纠正?