Сообщение Как провести вычисление только в рамках типа float, а не dou от 01.12.2016 12:41
Изменено 01.12.2016 15:14 VladD2
Привет!
Есть такие функции:
Выводят
[code]
2.22044604925031E-16
2.220446E-16
[code]
Хотя по моим понятиям должно выводить
[code]
2.22044604925031E-16
1.192093E-07
[code]
Почему и как добиться вычисления в рамках типа float во второй функции, а не double c привидением к float?
(Если кто не понял, это попытка получить значения DBL_EPSILON и FLT_EPSILON, которых по какой-то причине не завезли в дотнет)
Есть такие функции:
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
Привет!
Есть такие функции:
Выводят
Хотя по моим понятиям должно выводить
Почему и как добиться вычисления в рамках типа float во второй функции, а не double c привидением к float?
(Если кто не понял, это попытка получить значения DBL_EPSILON и FLT_EPSILON, которых по какой-то причине не завезли в дотнет)
Есть такие функции:
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, которых по какой-то причине не завезли в дотнет)