Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
 Аватар для SeeT
55 / 25 / 3
Регистрация: 12.10.2012
Сообщений: 132
Записей в блоге: 1

знаки после запятой

27.08.2013, 13:42. Показов 3919. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, простой вопрос на который я никак не могу найти ответ.
Почему после компиляции, программа отказывается показывать знаки после запятой?
Грешу на тип переменных, но вроде бы все верно. Надеюсь на вашу помощь

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#include <stdlib.h>
 
int x, y;
double z;
 
int main()
{
    x=rand() % 10 +1;
    y=rand() % 10 +1;
    z=x/y;
    cout << x << ":" << y << "=" << z;
 
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2013, 13:42
Ответы с готовыми решениями:

Табуляция и знаки после запятой
Здравствуйте, помогите пожалуйста. Как сделать так, чтоб программа выводила данные в нормальном виде, То есть одинаковое количество...

Переменная float - знаки после запятой
Итак я задаю какую-либо переменную типа float. Потом, с помощью scanf кладу в эту переменную значение 3.2 (к примеру.) Затем, с помощью...

знаки после запятой , формат float
я вот что делаю: float i = *(float*)0x0000000; приравниваю значение адреса в формате флоат , мне нужно сделать чтобы переменная...

15
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
27.08.2013, 13:45
Попробуй написать
C++
1
z=(double)x/(double)y;
1
 Аватар для SeeT
55 / 25 / 3
Регистрация: 12.10.2012
Сообщений: 132
Записей в блоге: 1
27.08.2013, 13:46  [ТС]
О дааа! Работает, отлично! Спасибо большое, добрый человек
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
27.08.2013, 13:53
SeeT, у тебя просто int делился на int и компилятор автоматически результат записывал в int, и только потом уже этот int запихивал в double, отсюда и потеря данных после запятой.
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
27.08.2013, 14:07
Цитата Сообщение от solar_wind Посмотреть сообщение
Попробуй написать
C++
1
z=(double)x/(double)y;
Два каста ни к чему, достаточно одного, и лучше привыкать к C++ кастам.
C++
1
z = static_cast<double>(x) / y;
1
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
27.08.2013, 14:18
Всё уже рассказали. Лишь немного дополню:
Си (равно как и Си++) имеет два типа деления - нормальное и целочисленное. Целочисленное - то же нормальное, но после отбрасывается дробная часть. Если хоть один из типов, участвующие в делении - дробное (float или double), то результат тоже дробный, иначе - целочисленный (и остаток отбрасывается).
Цитата Сообщение от Герц Посмотреть сообщение
Два каста ни к чему, достаточно одного, и лучше привыкать к C++ кастам.
В общем-то верно, но во-первых, это разводит неудобную и плохочитаемую простыню. Читаемость на первом месте, имхо. Во-вторых, в данном случае, кастов лучше вообще избегать (завести вместо int'ов - double или float). Наконец, тогда уж надо и инклудить в C++ стиле (никаких *.h), и использовать не STL, а BOOST, и ещё много чего правильного. И вообще - не мешать Си и Си++.
0
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
27.08.2013, 14:22
Цитата Сообщение от AnyOne697 Посмотреть сообщение
использовать не STL, а BOOST
как написание программ на С++ противоречит использованию STL?
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
27.08.2013, 14:30
Это уже максимализм, в C++ Standard Library (не STL) перекочевывают нововведения из Boost, и использовать последний вовсе не требуется в рядовых задачах. С появлением в стандартной библиотеке средств для работы с датами, временем, многопоточным программированием, регулярными выражениями и прочими вещами отпала необходимость в Boost во многих задачах.
В C++ Standard Library, по-видимому, нет ни одного заголовка с расширением *.hpp, везде использует *.h. Вопрос расширения для файла не имеет никакого отношения к Coding Conventions языка.
C-style касты обладают меньшей читаемостью и трудно идентифицируются в коде, усложняя восприятие. На счет того что без кастов тут можно было обойтись вообще - разумеется, тут спорить не с чем.
0
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
28.08.2013, 01:03
Цитата Сообщение от I.M. Посмотреть сообщение
как написание программ на С++ противоречит использованию STL?
Особо ни чем, но стоит признать ужасную реализаю шаблонов в Си++.
Вообще, я сильно разочаровался в плюсах за последнее время. Много, очень много вещей, которые делаются легко и непринуждённо в современных ЯП, в Си++ требуется городить трудночитаемые простыни кода. В то же вермя, производительность кода, скомпилированного непосредственно под архитектуру, не сильно выше, чем байт-код Java-машины или CIL-код. Более того - средний программист на Java напишет код быстрее и лучше, чем средний программист на Си++. Хоть это и "имхо", но по опыту именно так. Си++ создан для машины, под машину, Java (C#, Python) - для программистов.

Добавлено через 2 минуты
Цитата Сообщение от Герц Посмотреть сообщение
Это уже максимализм, в C++ Standard Library (не STL) перекочевывают нововведения из Boost, и использовать последний вовсе не требуется в рядовых задачах. С появлением в стандартной библиотеке средств для работы с датами, временем, многопоточным программированием, регулярными выражениями и прочими вещами отпала необходимость в Boost во многих задачах.
Си++11 сегодня поддерживается не всеми компиляторами. Да и BOOST использовать далеко не так удобно, как хотелось бы. Вообще, программирование на Си++ требует огромного опыта, порог вхождения в него слишком высок, чтобы начинать с него. Вот что я понял.
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
28.08.2013, 12:21
Си++11 сегодня поддерживается не всеми компиляторами. Да и BOOST использовать далеко не так удобно, как хотелось бы. Вообще, программирование на Си++ требует огромного опыта, порог вхождения в него слишком высок, чтобы начинать с него. Вот что я понял.
Это какими же, Visual C++ 2010 и ниже чтоли? Какие могут быть проблемы, если есть свободно распространяемые G++ и Clang, полностью поддерживающие текущий стандарт? Если твой компилятор не поддерживает C++11, то на сегодняшний день это уже твой косяк (на дворе середина 2013 года, и названные компиляторы уже даже исправления C++14 частично поддерживают). Даже тулчейны для Android и iOS полностью поддерживают стандарт.
0
28.08.2013, 12:28

Не по теме:

Цитата Сообщение от Герц Посмотреть сообщение
Это какими же, Visual C++ 2010 и ниже чтоли? Какие могут быть проблемы, если есть свободно распространяемые G++ и Clang, полностью поддерживающие текущий стандарт?
Visual C++ 2010 тот же самый. Самая нормальная студия, а ставить туда новый компилятор тот ещё гемор.
Но это так, к слову. Тем более, gcc не полностью поддерживает стандарт - самого главного нет - garbage collector'а, да и поддержка сугубо экспериментальная - по дефолту выключена. Я лишь попробовав баг нашёл. С clang ещё хуже. Так что не надо разводить. Я уже молчу про Visual C++, в Visual C до сих пор нет поддержки C'99, на неё мелкомягкие банально забили.

0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
28.08.2013, 12:40
GC не являются обязательной частью стандарта, слова "minimal support" тебе ни о чем не говорят?
А по ссылке то ты, собственно, ходил? Что там "еще хуже"?

И последний вопрос - ты на языке то этом разрабатываешь вообще? Спроси людей, реально использующих C++ - нужен ли им GC.
0
28.08.2013, 12:53

Не по теме:

Цитата Сообщение от Герц Посмотреть сообщение
GC не являются обязательной частью стандарта, слова "minimal support" тебе ни о чем не говорят?
А по ссылке то ты, собственно, ходил? Что там "еще хуже"?
Разрабатываю. Но C++11 пока не использую.
Minimal Support значит, что требуется минимальная поддержка gc, то есть не такой крутой и продвинутый, как в java, с отдельными потоками и прочим "непотребством". Вообще забавно было проследить, как коммитет думал, нужен ли GC. Сначала подумали, что нужен. Потом ещё раз подумали и сказали - нет, не будет, используйте фреймворки. Потом ещё раз подумали, и решили, что было бы не плохо, но не решились. Под конец, отвязались этим самым minimal support. А ещё они рефлексию забраковали. Хотя я точно и не понимаю, что значит этот minimal support, а ещё странно то, что ни gnu этого не реализовала, ни в clang'е этого не встретишь...

Вообще, если так будет дальше, я полностью откажусь от C++. Когда я искусил C#, я понял, что такое любовь. Когда я искусил Java, я понял, что такое нирвана. Когда я возвращаюсь к C++, меня охватывает дежавю - ничего не меняется.

0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.08.2013, 12:56
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Minimal Support значит, что требуется минимальная поддержка gc, то есть не такой крутой и продвинутый, как в java, с отдельными потоками и прочим "непотребством". Вообще забавно было проследить, как коммитет думал, нужен ли GC. Сначала подумали, что нужен. Потом ещё раз подумали и сказали - нет, не будет, используйте фреймворки. Потом ещё раз подумали, и решили, что было бы не плохо, но не решились
Вы бы proposal прочитали б что-ли... http://www.open-std.org/jtc1/s... /n2670.htm
1
12 / 10 / 1
Регистрация: 12.03.2012
Сообщений: 127
28.08.2013, 15:43
В общем-то верно, но во-первых, это разводит неудобную и плохочитаемую простыню.
C++
1
z=double( x )/ y; // C++ каст
в данном случае, кастов лучше вообще избегать
Что?

и использовать не STL, а BOOST
Что?

Вопрос расширения для файла не имеет никакого отношения к Coding Conventions языка.
Насколько я помню хотели сделать ".hpp", но пока комитет это бы одобрил прошли десятки лет, так что осталось как осталось - C заголовки имеют формат ".h", C++ заголовочные файлы вообще не имеют формата.

Много, очень много вещей, которые делаются легко и непринуждённо в современных ЯП, в Си++ требуется городить трудночитаемые простыни кода.
К примеру?

уже твой косяк


Вообще, если так будет дальше, я полностью откажусь от C++
Нам очень важен твой выбор.
0
28.08.2013, 22:42

Не по теме:

kvadro, вы видимо не читале тред. Без каста обойтись можно, если сразу завести переменные нужного типа. Именно то, STL убога, равно как и Си++ в неумелых руках. Про расширение файла вообще не понял. И что?

Цитата Сообщение от kvadro Посмотреть сообщение
Нам очень важен твой выбор.
Да неужели? Рад за Вас. (если не заметили, то там оффтоп)
Да и вообще, всё это жуткий оффтоп.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.08.2013, 22:42
Помогаю со студенческими работами здесь

Функция stod отбрасывает знаки после запятой
Добрый день. Подскажите, почему функция stod может отбрасывать все символы после точки? double* OpValue = new double; cout...

В массиве double обрубаются знаки после запятой
Всем привет и хорошего настроения! Мой вопрос: почему при выводе простого массива, элементы которого типа double, уменьшается количество...

При переводе из double в string теряются знаки после запятой
Перевожу переменную double в string stringstream sst; string f_str; double f=12345.99; sst &lt;&lt; f; f_str=...

В строке имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее.
В строке имеется одна точка с запятой ( ; ). Подсчитать количество символов до точки с запятой и после нее.

Почему после 51-го знака после запятой выводятся одни нули?
В продолжение темы: тот же код, только с увеличенным количеством знаков после запятой: #include &lt;iostream&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru