Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Сравнение чисел с плавающей запятой / 8 сообщений из 8, страница 1 из 1
06.04.2014, 11:50
    #38606363
ATkachenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение чисел с плавающей запятой
На форме в текстовое поле вводится например число -1.35
При нажатии на кнопку надо это число сравнить с числом -1.25
Как это сделать?
...
Рейтинг: 0 / 0
06.04.2014, 11:58
    #38606370
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение чисел с плавающей запятой
ATkachenko,

abs(x-y)<epsilon
...
Рейтинг: 0 / 0
06.04.2014, 12:09
    #38606373
ATkachenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение чисел с плавающей запятой
Как задать epsilon
...
Рейтинг: 0 / 0
06.04.2014, 13:02
    #38606387
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение чисел с плавающей запятой
ATkachenkoКак задать epsilon
это определятся задачей - какие числа мы считаем равными
для координат на яндекс-карте это может быть 0.00005
...
Рейтинг: 0 / 0
06.04.2014, 14:43
    #38606456
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение чисел с плавающей запятой
ATkachenko,

как вариант, перейти от плавающей запятой к фиксированной.
Всё зависит от задачи.
...
Рейтинг: 0 / 0
07.04.2014, 03:04
    #38606783
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение чисел с плавающей запятой
ATkachenko,

Константы эти есть FLT_EPSILON, DOUBLE_EPSILON или как-то так. непонятно, почему сразу привязались к эпсилонам из math.h.
...
Рейтинг: 0 / 0
09.04.2014, 09:13
    #38609306
Strangecat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение чисел с плавающей запятой
ИзопропилATkachenko,

abs(x-y)<epsilon

А можно ещё круче:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	// http://floating-point-gui.de/errors/comparison/

	public static boolean nearlyEqual(float a, float b, float epsilon) {
		final float absA = Math.abs(a);
		final float absB = Math.abs(b);
		final float diff = Math.abs(a - b);

		if (a == b) { // shortcut, handles infinities
			return true;
		} else if (a == 0 || b == 0 || diff < Float.MIN_NORMAL) {
			// a or b is zero or both are extremely close to it
			// relative error is less meaningful here
			return diff < (epsilon * Float.MIN_NORMAL);
		} else { // use relative error
			return diff / (absA + absB) < epsilon;
		}
	}



Другое дело что такая точность может никогда не понадобиться.
...
Рейтинг: 0 / 0
09.04.2014, 15:08
    #38610024
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение чисел с плавающей запятой
ATkachenkoКак задать epsilon

если хотите углубиться в теорию:

https://sites.google.com/site/ltwood/projects/numpro/float
http://habrahabr.ru/post/112953/
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Сравнение чисел с плавающей запятой / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]