Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Столкнулся с проблемой изменения данных в float. например: в функцию передаются параметры 0.3,0.1,0.1 и получается арифметическое выражение Код: plaintext 1. однако в качестве результата я получаю не 3, а 2. Решил сделать как было делал в делфи Код: pascal 1. Однако, функции trunc в builder 6.0 я не нашел. Были найдены ceil и floor, но эти функции не подходят, тк они отбрасывают дробную часть изменяя при этом целой части=( Пробовал так же Код: plaintext 1. однако, результат не изменился, подскажите пожалуйста решение, заранее спасибо ПС я понял что дело в мусоре из-за плавающей точки, но как его победить не понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2013, 16:16 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
Врешь ты всёВрешь ты всё: http://ideone.com/KcQfwm вывод 3 Быть может звезды сложились не так и дева в водолее... Однако все именно так как я написал. В функцию задаются вещественные значения, а при вычислении 0.1 волшебным образом превращается в 0.10000000024326, как следствие все дальнейшие расчеты идут лесом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2013, 16:29 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
проверил в консольном приложении MS VS 2005 express результат 3.... Что же с билдером то делать, как его лечить?=( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2013, 16:39 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
ииихВрешь ты всёВрешь ты всё: http://ideone.com/KcQfwm пропущено... Быть может звезды сложились не так и дева в водолее... Однако все именно так как я написал. В функцию задаются вещественные значения, а при вычислении 0.1 волшебным образом превращается в 0.10000000024326, как следствие все дальнейшие расчеты идут лесом Я чето тоже не нашел такого округления. Странно, что её нету в стандартной библиотеке, хотя на x86 в FPU есть ассемблерная fstoi. Можно написать самому простейшую функцию round: http://ideone.com/rmLZZc Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но если у вас десятичные дроби и C++11, то используйте десятичные дроби :) http://www.cplusplus.com/reference/ratio/ratio/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2013, 16:42 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
ииихпроверил в консольном приложении MS VS 2005 express результат 3.... Что же с билдером то делать, как его лечить?=( Поставить последнюю версию XE3 и использовать компилятор BCC64(Clang). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2013, 16:43 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
десятичные дроби и C++11 на x86 в FPU есть ассемблерная fstoi. Точнее: fistpl ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2013, 16:55 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
У меня нет ноутбука, и если преподаватель возжелает, чтобы я внес какие-то изменения в код компилировать придется именно на builder, тк там нет иного=( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2013, 16:56 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
Самое забавное, что тот же код который у меня написан перенесенный в консольную версию на Visual Studio 2005 Express отрабатывает верно оО. П.С. Всем кто пытался помочь спасибо, буду пытаться доказать преподу, что я не верблюд, а во всем виноват builder=( П.С.2 пробовал поменять в ключевых позициях float на double,так как вычитал, что он дает большую точность...не помогло...билдер укурен до сих пор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2013, 10:47 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
На правах лулза, проблема была таки во float классе, пропустил при переделывании на double 2 параметра, потому и не сработало. Всем еще раз спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2013, 10:53 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
Похоже товарищь даже не понял ничего в итоге. У меня есть идея — сделать топик бессмысленных вопросов, где публиковать ссылки на вопросы, которые про своей сути настолько идиотские, что и отвечать на них бессмысленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2013, 11:36 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
MasterZivПохоже товарищь даже не понял ничего в итоге. У меня есть идея — сделать топик бессмысленных вопросов, где апробировать ссылки на вопросы, которые про своей сути настолько идиотские, что и отвечать на них бессмысленно.поддерживаю )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2013, 11:46 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
авторБыть может для вас вопрос идиотский, однако, вы не можете отрицать, что разные среды использующие разные компиляторы по разному работают с вещественными числами при одной и той же реализации кода и одном и том же языке. МОГУ! авторЕсли вы намекали, что классы float и double различны в точности и реализации, 0) это не классы. Это типы данных. 1) да, точность их действительно разная. авторПС код проверял уже на gc++, MS VS 2005 express, QT...и там оно отрабатывало так как надо при использовании float. Это очень похоже на описание впечатлений слепого, которого подвели к слону. Оно конечно, определённая логика у него есть, но -- вся неверная, поскольку вся строится на ложных посылах, на ложных аксиомах. авторПС 2 Обязательно сделайте такой топик, он покажет желание гуру поиздеваться над новичками, мб это спасет кого-то с более слабой психикой=) Топик сделаем. авторПС 3 мой предыдущий комментарий был не для вас о гуру которые не сталкиваются с прелестями Buildder 6.0, вы видимо используете другие среды или более продвинутые версии от эмберкадеро, но да будит вам известно не у всех есть возможность перейти в др среду в силу тех или иных обстоятельств. Самое главное: Ты ПОНЯЛ, в чём у тебя была проблема, или нет? авторбуду пытаться доказать преподу, что я не верблюд, а во всем виноват builder=( Что кстати сказал препод ? авторпробовал поменять в ключевых позициях float на double,так как вычитал, что он дает большую точность...не помогло...билдер укурен до сих пор. Можешь показать, как пробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2013, 12:45 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
Насколько мне известно ВСЕ типы данных есть классы (со своими конструкторами, деструкторами и тп.). Для кого то это видимо откровение, но я об этом читал у кого то из забугорных авторов, хотя автор там и писал class like При ближайшем рассмотрении выяснилось, что в отладчике builder писал красивые дроби, однако, он по прежнему учитывал чудесный мусор и вместо 3 периодически писал 2, указателей там не было, все значения задавались через статические локальные переменные. Преподаватель ничего не сказал, его устроило, что тестовые примеры считает и бумага написана...разочарован... Проблему с недосчетом решил банальным добавлением единицы, но отлично понимаю, что это не правильно. Слепой из анекдота/притчи насколько я помню полагался лишь на тактильные ощущения, почему делал неверные выводы, однако аналогия забавная, тк пытался написать не 1 лишь выражение и прыгать вокруг него, а пытался решить проблему через преобразования, хотя и весьма смутно представляю отличие double от float кроме как в количестве слов и размере. По моему логично в случае проблемы с кодом, для проверки его проверить в др среде программирования (на компьютере с которым удается поработать стоит Win 7 Pro и builder, для тех кто в танке они оооочень странно периодически работают, включая fatal error'ы на ровном месте и прочие прелести). Исходник в данный момент скинуть не могу ибо пишу с чужого компьютера :) ПС сделайте тогда помимо топика и топик полезных советов новичкам, в который поместите не совсем стандартные решения, по типу примитивного увеличения динамического массива с помощью автоинкрементного оператора... ПС2 как доберусь до компьютера с исходниками скину весь класс, чтобы меня больше не обвиняли в том, чего я не совершал, лишь на основании беглой проверки, в других средах программирования. ПС3 Уважаемый модератор или кто вы есть, пишите пожалуйста от своего имени, а то обращаться к стенообразному анонимусу-допельгангеру не очень приятно=) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2013, 23:33 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
десятичные дроби и C++11ииихпропущено... Быть может звезды сложились не так и дева в водолее... Однако все именно так как я написал. В функцию задаются вещественные значения, а при вычислении 0.1 волшебным образом превращается в 0.10000000024326, как следствие все дальнейшие расчеты идут лесом Я чето тоже не нашел такого округления. Странно, что её нету в стандартной библиотеке, хотя на x86 в FPU есть ассемблерная fstoi. Можно написать самому простейшую функцию round: http://ideone.com/rmLZZc Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но если у вас десятичные дроби и C++11, то используйте десятичные дроби :) http://www.cplusplus.com/reference/ratio/ratio/ Автор, ты вот это вот читал? Что-нибудь понял? Чем не решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2013, 23:57 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
ииихПС3 Уважаемый модератор или кто вы есть, пишите пожалуйста от своего имени, а то обращаться к стенообразному анонимусу-допельгангеру не очень приятно=) Вы бы залогинились для начала, прежде чем предъявлять другим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2013, 00:48 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
Топикстартеру для начала сюда http://habrahabr.ru/post/112953/ и читать до просветления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2013, 08:24 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
ииих, ииих Guest Насколько мне известно ВСЕ типы данных есть классы (со своими конструкторами, деструкторами и тп.). Тебе известно неправильно. Либо ты читал какую-то хрень, либо понял неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2013, 11:15 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
Мимо прходил, Ничего статья, кстати. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2013, 11:28 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
Мимо прходилТопикстартеру для начала сюда http://habrahabr.ru/post/112953/ и читать до просветления. пытаюсь повторить Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. если число 0.15625 то все красиво Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Если 3.14 то в мантисе лежит 110010010000111111011011 или 13176795 то есть 2 в степени - 13176795 даcт 0. в експоненте 2 в степени 1. Сумма 2.0. Где что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2013, 00:57 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
Lepsik пытаюсь повторить Где что не так? Битовые поля для этого не подходят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2013, 14:31 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
MasterZivLepsikпытаюсь повторить Где что не так? Битовые поля для этого не подходят. Это почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2013, 14:44 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
LepsikЕсли 3.14 то в мантисе лежит 110010010000111111011011 или 13176795 то есть 2 в степени - 13176795 даcт 0. Из чего следует необходимость вычислять это: "2 в степени - 13176795"? Вы уверены что понимаете что делаете? Учтен ли факт что мантисса хранится в нормализованном виде с подразумеваемой но не хранящейся 1 в старшем разряде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2013, 15:02 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
Это почему?MasterZivпропущено... Битовые поля для этого не подходят. Это почему? Не знаю точно, пока до дома не доползу, где книжка. Но по-моему битовые поля не гарантируют порядок следования битов в словах, в которых они хранятся. Т.е. гарантируется только, что занимать они будут не более N бит (с возможным дополнением до полного слова) и что они будут правильно паковаться в и выделяться из места, где они хранятся. Но точно я стандарт на эту тему не помню, поэтому надо дойти до книги. Но в общем, так это или не так, в любом случае выделять битики из слов в этом примере можно было бы и руками, это бы работало всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2013, 16:55 |
|
||
|
отбросить дробную часть
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyLepsikЕсли 3.14 то в мантисе лежит 110010010000111111011011 или 13176795 то есть 2 в степени - 13176795 даcт 0. Из чего следует необходимость вычислять это: "2 в степени - 13176795"? Вы уверены что понимаете что делаете? я всего лишь следую статье, где сказано что надо дополнить мантису битом слева ( 1 + 01 ) далее число 101b = 5 использовать как степень с отрицательным числом. Вы вообше в статью заглядывали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2013, 18:11 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38227838&tid=2020273]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
70ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 291ms |
| total: | 455ms |

| 0 / 0 |
