2016-09-27 2 views
1
var result = Math.Log(1000, 10); 
var diff = result - 3; 

diff около -4x10^-16.Math.Log и круглый номер

Как я понял, точное значение 3 может храниться в двойной:

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

Я ошибаюсь, или это означает, что Math.log не является точным, по крайней мере, для значения 1000?

+0

чисел с плавающей запятой не являются точными – Matt

+0

@ Matt Насколько я понял, значение 3 может быть сохранена точно в число с плавающей точкой (см значение 3 в база 2 в моем посте) – krimog

ответ

1

Я рекомендую использовать Math.Log10 в вас дело

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

Это работает, спасибо – krimog

Смежные вопросы