Другие языки программирования и технологии
Какова природа вещественных чисел в Си?
Ну например натуральные числа типа (int), из данных берется 4 байта и преобразовывается в длинное! число, на double & float дается, вроде 8 байт, но обычно точка плавающая, как понимать этот феномен с точкой?
Это запись чисел в двоичной разрядной сетке в экспоненциальной форме - отдельно друг за другом знак, порядок, мантисса.
https://ru.wikipedia.org/wiki/Число_двойной_точности
На float, кстати, дается 4 байта, а не 8.
https://ru.wikipedia.org/wiki/Число_двойной_точности
На float, кстати, дается 4 байта, а не 8.
Андрей Кобелев
Да уж, круто сказанул? А на лад, тех кто не окончил высшее образование?
не вдаваясь в дебри, рассмотрим числа с плавающей точкой в противовес числам с фиксированной точкой (тоже время от времени используются). будем для простоты считать, что числа записываются в память в десятичном виде, хотя это и не так.
допустим у нас есть ячейка с фиксированной точкой, в которую мы можем записать 10 цифр до точки и 10 цифр после.
вроде все прекрасно, можем записать и число 123456789.0 и 0.0123456789 и даже 1234567890.0123456789
но вот для каких нибудь расчетов нам нужно подсчитать число с 19 знаками после точки. а для целой части хватит и одного знака, например для точного вычисления синуса угла.
или наоборот, нужно посчитать факториал числа, у которого целая часть стремительно растет, а дробная не нужна вообще. только зря точность отнимает.
или третий вариант - тангенс угла. он может быть как огромным, близким к бесконечности, так и совсем мизерным. и тут не угадаешь, сколько цифр отложить для целой части, а сколько для дробной
вот в этом случае и используются числа с плавающей точкой. в них, грубо говоря, есть те же 20 ячеек для хранения цифр, но кроме этого еще и точку можно поставить в любой позиции.
можно даже записать число вида 0.00000000000000000001234567890123456789, сдвинув точку далеко влево.
важно: 20 цифр взяты для примера, на самом деле в компьютере размер поля задается в двоичных разрядах, и даже такое, казалось бы, простенькое число как 0.1 невозможно записать в память без потери точности
допустим у нас есть ячейка с фиксированной точкой, в которую мы можем записать 10 цифр до точки и 10 цифр после.
вроде все прекрасно, можем записать и число 123456789.0 и 0.0123456789 и даже 1234567890.0123456789
но вот для каких нибудь расчетов нам нужно подсчитать число с 19 знаками после точки. а для целой части хватит и одного знака, например для точного вычисления синуса угла.
или наоборот, нужно посчитать факториал числа, у которого целая часть стремительно растет, а дробная не нужна вообще. только зря точность отнимает.
или третий вариант - тангенс угла. он может быть как огромным, близким к бесконечности, так и совсем мизерным. и тут не угадаешь, сколько цифр отложить для целой части, а сколько для дробной
вот в этом случае и используются числа с плавающей точкой. в них, грубо говоря, есть те же 20 ячеек для хранения цифр, но кроме этого еще и точку можно поставить в любой позиции.
можно даже записать число вида 0.00000000000000000001234567890123456789, сдвинув точку далеко влево.
важно: 20 цифр взяты для примера, на самом деле в компьютере размер поля задается в двоичных разрядах, и даже такое, казалось бы, простенькое число как 0.1 невозможно записать в память без потери точности
Похожие вопросы
- Как написать программу, которая будет представлять вещественное число в памяти компьютера
- Представить заданные вещественные числа А и В в формате с плавающей точкой.
- Как срандомить случайные вещественные числа N и занести их в массив? C++
- Вещественные числа и языки программирования
- Pascal . Дан массив вещественных чисел. Найти сумму элементов, номера которых являются простыми числами
- Дано вещественное число R и массив размера N. Найти элемент массива, который наименее близок к данному числу
- как ввести и вывести числа? Язык Си
- Что такое вещественные числа?
- Почему вещественные числа в компьютере представлены не точно?
- Представить вещественные числа в четырёхбайтовой ячейке памяти в формате с плавающей точкой.