Math.Log 和轮数

Math.Log and round number

var result = Math.Log(1000, 10);
var diff = result - 3;

diff 大约是 -4x10^-16.

据我了解,确切的值 3 可以存储在双精度数中:

3 (base 10) = 1.1x10^1 (base 2)

我错了吗?这是否意味着 Math.Log 不准确,至少对于值 1000?

我建议在这种情况下使用 Math.Log10

var result1 = Math.Log(1000, 10); //result1: 2.9999999999999996
var result2 = Math.Log10(1000);  //result2: 3