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