|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.04.2010, 11:53 | #1 |
Пользователь
Регистрация: 18.10.2009
Сообщений: 29
|
с++
подскажите пожалуйста как можно проверить в с++ целое число или дробное... в паскале есть функция транк...если такая в си..заранее спасибо..
|
05.04.2010, 12:08 | #2 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Теоретически можно так:
Код:
x = 0.5+0.5; в результате может получиться 0.99999999 или 1.00000001. Лучше делать как-нибудь так: Код:
|
06.04.2010, 11:26 | #4 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
FLT_EPSILON и DBL_EPSILON - это погрешность при значениях, близких к 1.
То есть, если у нас выражение "x = 1000.5 + 0.5", то эти константы окажутся слишком маленькими. В качестве эпсилон надо взять максимальное число, которое не вносит существенной разницы в результат (которое практически можно считать целым) |
06.04.2010, 12:49 | #5 | |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
Цитата:
Код:
Код:
Added 11:44 CET А кто, собственно, нас, вообще, заставляет пользоваться int?!... Код:
Последний раз редактировалось Vago; 06.04.2010 в 13:45. |
|
06.04.2010, 14:09 | #6 | ||
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Цитата:
А теперь практическая проверка: Код:
Цитата:
UPD: я сделал наиболее точную и "правильную" функцию без грязных хаков. Этот вариант я и предлагаю автору топика (нужно только подобрать подходящий EPSILON). Код:
Последний раз редактировалось ds.Dante; 06.04.2010 в 14:21. |
||
06.04.2010, 14:44 | #7 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
Золотые слова!! ))) Только в реальной инженерной задаче сделать это ой как трудно! Что значит "неверный результат"? )) "Результат с требуемой точностью" - так здесь вернее будет сказать. Ты, просто, успокаиваешься при погрешности чуть меньше 10^-5, а я - 10^-21 Подставим, как компромисс, FLT_EPSILON (10^-7), и обе п/п выдадут "Ура, целый ноль!"
Последний раз редактировалось Vago; 06.04.2010 в 14:46. |