Добрый день! Я сейчас изучаю язык C и столкнулся с вещами, которые на первый взгляд нелогичны.
Смотрите вопросы в коде с примерами:
#include <stdio.h>
#include <float.h>
int main(int argc, char *argv[])
{
double x = 999999999999999.99;
printf("%.2lf\n", x); //почему здесь вывод будет "1000000000000000.00" а не "999999999999999.99"?
x = DBL_MAX;
x = x - 1;
if(DBL_MAX == x) {printf("DBL_MAX == DBL_MAX - 1\n");} //почему программа отображает эту строчку?
x = 999999999999.12;
printf("%lf\n", x); //почему здесь выводится "999999999999.119995" а не "999999999999.12"?
}
Буду благодарен если кто-то из профессионалов даст ответы на данные вопросы.