Диапазон чисел, которые можно записать данным зависит от количества бит, отведённых для представления мантиссы и показателя. На обычной 32-битной вычислительной машине, использующей двойную точность (64 бита), мантисса составляет 1 бит знак + 52 бита, показатель — 1 бит знак + 10 бит. Таким образом получаем диапазон точности примерно от 4,94·10−324 до 1.79·10308 (от 2−52 × 2−1022 до ~1 × 21024). Пара значений показателя зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся значенияNaN (Not a Number, не число) и +/-INF (Infinity, бесконечность), получающихся в результате операций типа деления на ноль нуля, положительных и отрицательных чисел. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы. В специализированных устройствах (например GPU) поддержка специальных чисел часто отсутствует. Существуют программные пакеты, в которых объём памяти выделенный под мантиссу и показатель задаётся программно, и ограничивается лишь объёмом доступной памяти ЭВМ.
Напишем программу "kvur.c" для вычисления корней квадратного уравнения общего вида: ax2 + bx +c = 0.
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <math.h>
/*Вычисление корней квадратного уравнения*/
main()
{
float a, b, c, d, x1, x2;
char str[50];
//Очистить экран
textbackground(4);
textcolor(15);
clrscr();
//ВВод коэффициентов a, b, c
CharToOem("Введите коэффициенты a, b, c\n", str);
printf(str);
scanf("%f %f %f", &a, &b, &c);
//Вычисление дискриминанта d
d=b*b - 4*a*c;
if (d<0) {
CharToOem("Действительных решений нет", str);
printf(str);
}
else {
// Вычисление корней уравнения x1 и x2
x1=(-b - sqrt(d))/(2*a);
x2=(-b + sqrt(d))/(2*a);
// Вывод корней уравнения x1 и x2
CharToOem("\n x1=%f x2=%f", str);
printf(str, x1, x2);
};
// Конец программы
CharToOem("\nДля выхода нажмите любую клавишу", str);
printf(str);
getch();
}