Мне нужно написать функцию для сравнения строкового значения «15.0000000000000001» до «15», и я использую MathNet. Использование MathNet.Symbolics.Expression.Real принимает только double. Когда я делаю следующееMathNet real double precision issue
Expression valOne = Expression.Real(Double.Parse("15.0000000000000001"));
Expression valTwo = Expression.Real(Double.Parse("15"));
valOne.Equals(valTwo);
Вышеприведенные имеет значение true.Double.Parse 15.0000000000000001 возвращается 15. Я понимаю, что 0 после десятичной бессмысленно удваивать и имеет ограничения на хранение.
Не могли бы вы помочь?
Какие вычисления или сравнения вы делаете, где вам нужно 18 цифр абсолютной точности? –
Чтобы представить это в перспективе - есть [приблизительно 7.5e18 зерен песка на земле] (http://www.npr.org/sections/krulwich/2012/09/17/161096233). Это действительно имеет значение, если вы ошибаетесь на десять зерен? –