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

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

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

Константы эти есть FLT_EPSILON, DOUBLE_EPSILON или как-то так. непонятно, почему сразу привязались к эпсилонам из math.h.
...
Рейтинг: 0 / 0
Сравнение чисел с плавающей запятой
    #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
Сравнение чисел с плавающей запятой
    #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]