double тип данных языка Си. Число с плавающей точкой с двойной точностью.

1) Обычно занимает 64 бита (8 байт)
2) Диапазон представляемых значений -1.7E-308 - 1.7E+308 (значения DBL_MIN и DBL_MAX из float.h)
3) Спецификатор формата %f (%lf для scanf())
4) Верных значимых цифр 15-18 (значение DBL_DIG из float.h)
5) Для обозначения числа с плавающей точкой двойной точности (double) используется запись типа 3.14 (с точкой и без символа f на конце, с ним - число одинарной точности float 3.14f). Если нет дробных знаков и число как будто целое - точку и ноль нужно добавить, например 32.0

// Ввод и вывод double в(из) консоли
#include <stdio.h> // printf() scanf()
int main(){
    double a = 1.3;
    printf("a = %f \nInput double number in format *.* \n", a); // Выводим double и приглашение в вводу
    scanf("%lf", &a);   // Вводим double
    printf("%f \n", a); // Выводим double
	return 0;
}
Пример фрагмента программы с преобразованием в строку char и обратно

double val_double = strtod(str_double, NULL); // Преобразование строки в double <stdlib.h>
sprintf_s(buf_double, buf_size, "%f", val_double); // Преобразование double в строку

Проверка на NaN (не число) или на плюс минус бесконечность


#include < math.h >  
int isnan (double x); // Возвращает 0  если x конечное число или бесконечность. Отличное от нуля значение, если проверяемый аргумент не число (NAN).
int isinf (double x); // Возвращает 0, если x конечное число или не число (nan). Отличное от нуля значение, если проверяемый аргумент плюс или минус бесконечность.
Пример программы с double

#include <stdio.h> //printf()
#include <math.h> // isnan(), isinf()
int main(){
    double a = 3.0;
    printf("a = %f, isnan = %d, isinf = %d \n", a, isnan(a), isinf(a)); // a = 3.000000, isnan = 0, isinf = 0
    double res = a / 0; // Деление на ноль
    printf("res = %f, isnan = %d, isinf = %d \n", res, isnan(res), isinf(res)); // res = 1.#INF00, isnan = 0, isinf = 1
    res = NAN; // Присваиваем значение "не число"
    printf("res = %f, isnan = %d, isinf = %d \n", res, isnan(res), isinf(res)); // res = 1.#QNAN0, isnan = -1, isinf = 0
    res = INFINITY; // Присваиваем значение "бесконечность"
    printf("res = %f, isnan = %d, isinf = %d \n", res, isnan(res), isinf(res)); // res = 1.#INF00, isnan = 0, isinf = 1
}
2023-03-21



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

bool тип данных в языке Си.
Тип данных char в языке Си.
double тип данных языка Си. Число с плавающей точкой с двойной точностью.
Тип данных enum (или перечисление) в языке Си.
float тип данных языка Си.
int целочисленный тип данных языка Си.
long и long long целочисленные типы данных в языке Си.
short тип данных языка Си.
size_t тип данных языка Си.
struct тип данных языка Си.
union или объединение - тип данных в языке Си.
Ключевое слово языка Си _Bool