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