Информация об изменениях

Сообщение Как провести вычисление только в рамках типа float, а не dou от 01.12.2016 12:41

Изменено 01.12.2016 15:14 VladD2

Привет!

Есть такие функции:
        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());


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

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

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

(Если кто не понял, это попытка получить значения DBL_EPSILON и FLT_EPSILON, которых по какой-то причине не завезли в дотнет)
Как провести вычисление только в рамках типа float, а не dou
Привет!

Есть такие функции:
        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, которых по какой-то причине не завезли в дотнет)