Перейти к содержимому

Как вывести дробное число в c

  • автор:

Как вывести дробное число в c

Для этого делал всё то же самое для целых чисел и всё работало. А сейчас, когда при компиляции ввожу дробное число в х, а потом хочу ввести игрек, то у меня сразу он считает и причем y=сложение чисел которые я ввел в икс. хотя я одно число ввожу а не два. а он думает что 2 видимо.

мне кажется что проблема в int main
может быть float main, или это вообще всё не так надо.
извините, я только учусь.

Изображения

Безымянный.png (7.6 Кб, 206 просмотров)
2.jpg (12.0 Кб, 132 просмотров)

Регистрация: 22.05.2007
Сообщений: 9,518

Пробуйте вводить целые числа или у дроби другой разделитель ставьте (я уже не помню там, или .) перед вводом игрика можно буфер cin очистить, чтобы ничего автоматом в переменную не лезло и запрашивалось у пользователя.
Ну, и sum сначала посчитать нужно, а потом выводить.

Пользователь
Регистрация: 28.04.2010
Сообщений: 40
как сказал товарищ pu4koff выше, нужно сначала посчитать, а потом выводить

#include #include using namespace std; int main(void) < float x, y, sum; cout > x; cout > y; sum = x + y; cout
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка int main() Пиу Пиуу Общие вопросы C/C++ 14 08.11.2014 13:33
операция мод применимо к типу float,проверка числа- целое или дробное all_is_fear Помощь студентам 3 17.11.2011 16:16
функция float average(int arrray[],int from,int to) yuliyayuliya Помощь студентам 0 25.04.2011 21:55
error: ‘::main’ must return ‘int’ Without Soul Общие вопросы C/C++ 9 24.03.2011 07:26
Ошибка`main’ must return `int’ Hichigo Общие вопросы C/C++ 9 26.02.2011 15:33

Действительные числа

Ранее рассматривался только один тип целочисленных переменных — int . На самом деле существует несколько основных целочисленных типов, тип int — лишь один (но наиболее часто используемый) из них.

Таблица основных целочисленных типов.

Название Размер Знаковый Синонимы
short 2 байта Знаковый short int , signed short , signed short int
unsigned short 2 байта Беззнаковый unsigned short int
int 4 байта Знаковый signed int
unsigned 4 байта Беззнаковый unsigned int
long 4 байта Знаковый long int , signed long , signed long int
unsigned long 4 байта Беззнаковый unsigned long int
long long 8 байт Знаковый long long int , signed long long , signed long long int
unsigned long long 8 байт Беззнаковый unsigned long long int

То есть типы бывают “короткими” ( short ), обычными, длинными ( long ) и очень длинными ( long long ). Последний тип является расширением компилятора GNU C++ и не является стандартным типом для языка C++, поэтому он может отсутствовать в других реализациях языка или называться по-другому (например, в компиляторе Microsoft Visual C++ аналогичный тип называется int64 ). Чем “длиннее” тип, тем большее число различных значений он может принимать, тем больше памяти он занимает. Также типы бывают знаковыми ( signed ), которые могут принимать как положительные, так и отрицательные значения и беззнаковые ( unsigned ), которые принимают только неотрицательные значения.

Таблица значений, которые могут принимать различные типы:

Название Размер Минимальное значение Максимальное значение
short 16 бит -2 15 =- 32768 2 15 -1 = 32767
unsigned short 16 бит 0 2 16 -1 = 65535
int , long 32 бита -2 31 = -2147483648 2 31 -1 = 2147483647
unsigned , unsigned long 32 бита 0 2 32 -1 = 4294967295
long long 64 бита -2 63 = -9223372036854775808 2 63 -1 = 9223372036854775807
unsigned long long 64 бита 0 2 64 -1 = 18446744073709551615

На самом деле в стандарте языка C++ не оговорены конкретные значения размеров типов. Оговорено только то, что одинаковые знаковые и беззнаковые типы имеют одинаковые размеры, и размер меньшего типа всегда не превосходит размера большего типа. Вот какие размеры могут быть у этих типов в зависимости от разрядности процессора компьютера:

Тип 16-битный процессор 32-битный процессор 64-битный процессор
short 2 байта 2 байта 2 байта
int 2 байта 4 байта 4 байта
long 4 байта 4 байта 8 байт
long long 8 байт 8 байт

Действительные типы

Действительные (вещественные) числа представляются в виде чисел с десятичной точкой (а не запятой, как принято при записи десятичный дробей в русский текстах). Для записи очень больших или очень маленьких по модулю чисел используется так называемая запись “с плавающей точкой” (также называемая “научная” запись). В этом случае число представляется в виде некоторой десятичной дроби, называемой мантиссой, умноженной на целочисленную степень десяти (порядок). Например, расстояние от Земли до Солнца равно 1.496·10 11 , а масса молекулы воды 2.99·10 -23 .

Числа с плавающей точкой в программах на языке C++, а также при вводы и выводе записавыются в виде мантиссы, затем пишется буква e , затем пишется порядок. Пробелы внутри этой записи не ставятся. Например, указанные выше константы можно записать в виде 1.496e11 и 2.99e-23 . Перед самим числом также может стоять знак минус.

Для представления в памяти ЭВМ действительных чисел существует три типа:

Тип Точность Размер Количество знаков мантиссы Минимальное положительное значение Максимальное значение
float Одинарная 4 байта 7 1.4e-45 3.4e38
double Двойная 8 байт 15 5.0e-324 1.7e308
long double Расширенная 10 байт 19 1.9e-4951 1.1e4932

Операция деления

Для действительных чисел определены операции сложения, вычитания, умножения и деления.

При этом операция деления выполняется по-разному для переменных и констант целочисленного типа и для переменных и констант действительных типов. В первом случае деление производится нацело с отбрасыванием дробной части, во втором случае — деление производится точно и результатом является действительное число. Более точно, если делимое и делитель одновременно являются целочисленными константами или переменными целочисленных типов, то деление будет целочисленным, а если хотя бы одно из них действительное, то деление будет действительным. Например:

cout 

выведет 3 в первой строке и 3.33333 в остальных строках.

Результат выполнения деления не зависит от того, какой переменной будет присвоен результат. Если написать double a = 10 / 3; , то переменная a будет равна 3, так как деление 10/3 будет целочисленным, независимо от того, чему будет присвоен результат.

Приведение типов

Иногда возникает необходимость привести выражение одного типа к такому же выражению другого типа. Например, если есть две переменные a и b типа int и требуется вычислить их частное (не целочисленное) и записать в переменную d типа double . Следующий код:

double d; d = a / b

будет неверным, т.к. деление a / b будет целочисленным. Правильный код такой:

double d; d = (double)a / b;

В этом примере используется операция приведения типа: (double)a . Эта операция возвращает значение типа double , но равное значению переменной a . В результате деление будет выполняться, как деление вещественных чисел, поскольку будет выполняться деление действительного значения на целочисленное.

Операция приведения типа не меняет тип самой переменной и ее значение, а только возвращает значение другого типа.

Упражнение

Определите, чему будут равны следующие переменные

int a = 13 / 5; int b = 13 % 5; int c = 13.0 / 5; double d = 13 / 5; double e = 13 % 5; double f = 13.0 / 5; double g = 13 / 5 + 2 / 5; double h = 13.0 / 5 + 2.0 / 5; int i = 13.0 / 5 + 2.0 / 5;

Список функций

В стандартную математическую библиотеку языка Си (а, значит, и C++) входит множество специальных математических функций, которые нужно знать и уметь использовать. Для того, чтобы использовать эти функции в своей программе, необходимо подключить заголовочный файл, содержащий описания этих функций, что делается строчкой в начале программы:

#include

Функция от одного аргумента вызывается, например, так: sin(x) . Вместо числа x может быть любое число, переменная или выражение. Функция возращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:

y = sin(x); cout 

Также в файле cmath есть набор полезных числовых констант, например, константа M_PI хранит значение числа \(\pi\).

В компиляторе Visual C++ для использования этих констант необходимо объявить директиву препроцессора _USE_MATH_DEFINES перед подключения заголовочного файла cmath .

#define _USE_MATH_DEFINES #include

Точность вывода

По умолчанию действительные числа выводятся с точностью в 6 знаков, но в переменной типа double числа храняться с точностью в 15-16 знаков. Для того, чтобы вывести число с большей точностью, например, с точностью в 15 знаков, нужно выполнить команду:

cout.precision(15);

Как на СИ преобразовать вводимое дробное или целое число в внутренний формат(спт/сфт) и вывести его?

Здравствуйте, как мне преобразовать на си число(дробное. целое) в внутренний формат(спт/сфт). Мне нужно реализовать известный алгоритм преобразования, но пока у меня не получается. Я накидал шаблон, но дальше пока не могу двигаться. Спасибо большое.

#include #include . . . unsigned char representation[sizeof(float)]; float x = 76.625; memcpy(representation, &x, sizeof(x)); for (int i = sizeof(x) - 1; i >= 0; i--) < unsigned char byteRep = representation[i]; //0..255 //перевести это число в 16-сс и вывести, можно по 2-м цифрам >
  • Вопрос задан более трёх лет назад
  • 1598 просмотров

Комментировать
Решения вопроса 1
"I'm here to consult you" © Dogbert

как мне преобразовать на си число(дробное. целое) в внутренний формат(спт/сфт)

Что такое спт/сфт? С Плавающей Точкой -> С Фиксированной Точкой?
Просто умножить на 2^(количество битов в дробной части представления с фиксированной точкой) и взять целую часть от результата. Например, для представления с фиксированной точкой 16.16:

float x = 76.625; uint32_t fix = (int32_t)(x * (1 

Вывести его проще всего приведя к типу float и поделив на 2 ^ (количество битов в дробной части представления с фиксированной точкой):
printf("%f\n", (float)fix / (1
Ответ написан более трёх лет назад
Нравится 1 1 комментарий
mr_firuzinho @mr_firuzinho Автор вопроса

как мне преобразовать на си число(дробное. целое) в внутренний формат(спт/сфт)

Т.е как именно преобразовать в число с плавающей точкой и, как это же самое число в чисто с фиксированной точкой

Ответы на вопрос 1
Developer, ex-admin

Не понял то такое спт/сфт.
Но в функциях printf есть спецификаторы для вывода в 16-сс.
Если вручную, то я бы завел массив из 16 элементов char, куда записал шестнадцатиричные цифры, потом берете половину байта как индекс массива и строите строку из элементов массива.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

android

  • Android
  • +3 ещё

Какие есть доки по сборке APK/AAB с использованием Android NDK?

  • 1 подписчик
  • 30 дек. 2023
  • 65 просмотров

C++ Пользователь вводит с клавиатуры дробное число. Округлить его до двух знаков после запятой и вывести.

Пробовал вот таким образом, но в консоль выводится только целая часть. Не пойму почему.

int DROBi = int(DROB); // 33

double DROBs = DROB * 100; // 3344.55

int DROBe = int(DROBs); // 3344

double DROBee = DROBe / 100; // 33.44

int DROBeee = int(DROBee); // 33

double DROBeeee = DROBee - DROBeee; // 0.44

double DROBie = DROBi + DROBeeee; // 33.44

Лучший ответ
double DROBee = DROBe / 100.; // попробуй просто поставить точку после 100
hmoff1711Профи (603) 5 лет назад
Это сработало! Спасибо! А как это работает? Для чего это точка?

Miku Hatsune Мудрец (11173) Потому что когда делишь целое на целое - получаешь целое Делишь целое на число с плавающей точкой - получаешь число с плавающей точкой

Остальные ответы
#include "iostream"
#include "iomanip"
using namespace std;
int main()>f; cout
. Гений (84806) 5 лет назад
Если не выберут этот ответ - даже я расстроюсь =)
hmoff1711 Профи (603) я так понимаю, фиксированная точка и setprecision() выбор точки?
hmoff1711Профи (603) 5 лет назад
а что означает fixed << setprecision(2) ?

Miku Hatsune Мудрец (11173) Значит, что числа выводятся 1.В десятичной форме 2.С точностью до двух знаков после точки

Похожие вопросы
Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *