![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 28.06.2018
Сообщений: 38
|
![]()
Доброе утро всем форумчанам (и не форумчанам, короче, всем на свете)! :D Пытался сделать программу, которая считает кол-во чисел после запятой и выводит само число, расположенное после запятой. Проблема в том, что моя программа... как-то неправильно делает эти вещи: например, вводя число 10.1 программа выводит информацию о том, что чисел после запятой 2, а не 1, а результативное число равно почему-то 10, а не 1, хотя в случае 15.6 выводится всё правильно. Вводя 1.1 или 2.6 вывод идёт правильно, но когда вводится число с тремя числами после запятой (например, 1.456), программа выводит одно число после запятой, а само число - 4.56. Такие пироги
![]() P.S.: Си-Аут в циклах я делал для того, что-бы знать, что происходит в циклах и что выводится в результате. P.P.S.: Я сам новичок, если что, ненадо критиковать меня за ошибки. И тапками в меня кидаться не надо ![]() Кстати, вот сам код: Код:
Последний раз редактировалось Novy; 28.06.2018 в 09:51. Причина: Опечатка |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Во-первых, не чисел, а цифр (почитайте, что такое цифры, а что такое числа и чем они отличаются).
а во-вторых, задача может иметь решение ТОЛЬКО если числа вводятся в строковом виде и в этой строке можно подсчитать количество цифр до запятой, после запятой. Всё остальное упирается в машинное представление и погрешность представления чисел в форме с плавающей запятой. ознакомьтесь с теорией. Например, ОЧЕНЬ рекомендую Вам ознакомится со статьёй Неочевидные особенности вещественных чисел (с) Григорьев Антон или на хабре - Что нужно знать про арифметику с плавающей запятой или статья : Алексей Михайличенко с королевства дельфи - Загадки округления p.s. для получения дробной части есть специальные функции. Грубо говоря, чтобы получить дробную часть, нужно отнять от числа его целую часть. Последний раз редактировалось Serge_Bliznykov; 28.06.2018 в 10:09. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 14.03.2017
Сообщений: 68
|
![]() Код:
Последний раз редактировалось 2Lui; 28.06.2018 в 14:37. Причина: Поправил замечания p51x |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,831
|
![]()
1. А если разделитель точка?
2. Лучше сравнивать с npos, а не с -1. 3. Какой смысл вообще сравнивать с -1 после инкремента? |
![]() |
![]() |
![]() |
#5 | ||
Пользователь
Регистрация: 14.03.2017
Сообщений: 68
|
![]() Цитата:
Цитата:
3.Ошибку исправил. |
||
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,831
|
![]()
А если Ы? Давайте не выдумывать, есть понятие десятичный разделитель. Он легко определяется по локали или системно.
Можно, до того как npos вдруг решат сделать другой константой. И тогда придется все проги переписывать. +сравнение с npos явно указывает, что проверяется. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 14.03.2017
Сообщений: 68
|
![]() Код:
Последний раз редактировалось 2Lui; 28.06.2018 в 15:03. Причина: p51x |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,831
|
![]()
Ну да, студень весь семестр прогулял. Закинул на форум сфотканные задачи - пусть лохи быстренько "напишут правильный код, покажут что да как, да еще построчно прокомментируют". А он пошел по очень важным делам... пиво нагревается... Так?
|
![]() |
![]() |
![]() |
#9 | |
Пользователь
Регистрация: 28.06.2018
Сообщений: 38
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 14.03.2017
Сообщений: 68
|
![]()
Ну на самом деле силка на сайт делфи там все есть то что вы ищете просто нужно читать а не листать.
Силку на хабр почитайте поймёте может быть. Последний раз редактировалось 2Lui; 28.06.2018 в 16:19. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Конвертация single float в double float | kypck | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 10 | 23.04.2012 00:22 |
Float и Double | crawter | C# (си шарп) | 1 | 19.03.2012 15:46 |
Ошибка типа cannot convert `float*' to `float' for argument `1' ... | Trackman | Помощь студентам | 3 | 23.05.2011 17:09 |
Отображение значений переменных типа float и double(Языки Pascal и C) | Сырно | Помощь студентам | 3 | 17.10.2010 18:37 |
float или double? | zgest | Общие вопросы C/C++ | 10 | 20.03.2010 15:14 |