Как провести вычисление только в рамках типа float, а не dou
От: oziro Нигерия  
Дата: 01.12.16 12:41
Оценка:
Привет!

Есть такие функции:
        static double GetDblEpsilon()
        {
            double d = 1;
            while (1.0 + d / 2 != 1.0)
            {
                d = d / 2;
            }
            return d;
        }

        static float GetFltEpsilon()
        {
            float d = 1f;
            while (1.0f + d / 2f != 1.0f)
            {
                d = d / 2f;
            }
            return d;
        }

...
            Console.WriteLine(GetDblEpsilon());
            Console.WriteLine(GetFltEpsilon());


Выводят
2.22044604925031E-16
2.220446E-16


Хотя по моим понятиям должно выводить
2.22044604925031E-16
1.192093E-07


Почему и как добиться вычисления в рамках типа float во второй функции, а не double c привидением к float?

(Если кто не понял, это попытка получить значения DBL_EPSILON и FLT_EPSILON, которых по какой-то причине не завезли в дотнет)
Отредактировано 01.12.2016 15:14 VladD2 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.