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

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

27.08.2013, 13:42. Показов 3858. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru