|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.06.2013, 14:40 | #1 |
DI HALT RET
Форумчанин
Регистрация: 30.12.2010
Сообщений: 117
|
[вопрос] Как откинуть знаки после запятой
Доброго времени суток.
Помогите, если время есть. В общем столкнулся с траблой следующего вида. Есть число 23,2345001, как отбросить лишние 001? Я пробовал умножать, переводить в int и обратно в float c помощью деления. Ну и получилось не точное число (н-р: 23,23449). Как это побороть? Пока нагуглил только ответы, как вывести это дело на экран, но мне это не подходит, потому что значение ещё будет участвовать в вычислениях. Заранее спасибо. |
02.06.2013, 14:50 | #2 |
Форумчанин
Регистрация: 25.09.2012
Сообщений: 182
|
Если я правильно понял, то нужно оставить 4 знака после запятой. Над этим делом можно как нибудь поизвращатся, например умножить на 10000 и у нас останется 232345,001 , далее перевести в int, тем самым округлив всё нафиг, потом перевести обратно в float и разделить на те же 10000. В результате мы должны получить 23,234500, но это лишь теория и догадки
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan. |
02.06.2013, 15:09 | #3 | |
DI HALT RET
Форумчанин
Регистрация: 30.12.2010
Сообщений: 117
|
Цитата:
|
|
02.06.2013, 16:14 | #4 |
Форумчанин
Регистрация: 25.09.2012
Сообщений: 182
|
Долго бродил я по просторам всемирной паутины, на сайты заморские забредал(самому интересно стало), да и чего только не пробовал, всё без толку, как вдруг набрёл на такую родную math.h в википедии и нашёл в ней очень интересную вункцию, которая округляет до целого в формате float. Применил её и заработало
Снимок.jpg А вот собственно и сам код Код:
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan. |
02.06.2013, 17:19 | #5 |
DI HALT RET
Форумчанин
Регистрация: 30.12.2010
Сообщений: 117
|
Спасибо, но мой VS 2012 не нашел эту функцию. Хотя в MSDN написано, что надо подгрузить amp_math.h. Попробую разобраться. Спасибо
|
02.06.2013, 17:36 | #6 |
Форумчанин
Регистрация: 25.09.2012
Сообщений: 182
|
Попробуйте cmath.h вместо math.h, может прокатит
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan. |
02.06.2013, 19:24 | #7 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Используйте тип double вместо float, он более точный, так что погрешность будет значительно меньше. Совсем от нее избавиться не получится, т.к. особенности двоичной арифметики позволяют точно представлять только числа, равные сумме степеней двоек (в том числе, степеней числа 1/2). К примеру, даже число 0,3 будет представлено как-нибудь вроде 0,2999999998. Единственный способ избавиться от неточностей совсем - реализовать какую-нибудь символьную арифметику (например, работающую с рациональными дробями и радикалами), но не думаю, что в вашем случае оно будет того стоить.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как удалить знаки после запятой | ukrman | Microsoft Office Excel | 11 | 03.02.2012 17:22 |
Как в программе отсеч лишние знаки после запятой? | egor088 | Общие вопросы Delphi | 40 | 15.02.2011 00:17 |
откинуть текст после названия домена | designer999 | Общие вопросы Delphi | 12 | 20.04.2010 18:18 |
Разделение чисел на до запятой и после запятой | msser | Microsoft Office Excel | 8 | 23.10.2009 11:57 |
знаки после запятой | RiF | Помощь студентам | 10 | 16.12.2008 20:04 |