关于数据类型转换的一个奇怪问题,有人知道原因吗?
我在程序中用到了Math.Log()这个求对数的方法,现在出现一个无法理解的问题:
Math.Log(8,2); //结果是正确的值:3
(int)Math.Log(8,2); //结果竟是2 ???
Math.Floor(Math.Log(8,2)); //也是2 ??
用其它数值测试均没有上面碰到的这种问题,比如
(int)Math.Log(4,2)和Math.Log(4,2)结果都是2,Math.Log(16,2)和 (int)Math.Log(16,2) 结果都是4,Math.Log(32,2)和(int)Math.Log(32,2)结果都是5,只有(int)Math.Log(8,2)或Math.Floor(Math.Log(8,2));输出的值不正确,百思不得其解,在同事的机器上测试结果也一样,应该不是机器的问题了,难道是.net的bug?或是别的什么原因?有谁碰到过这个问题吗?