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