Сравните пропорции по ширине и высоте

Учитывая список размеров экрана, как я могу определить, какие из них имеют соотношение сторон 4: 3 и 16: 9?
Я могу использовать ширину / высоту, чтобы получить его, но для размеров 16: 9 я иногда получаю 1.778, а иногда 1.777778 из-за ошибок округления.

1

Решение

Проверить, если 4 * height == 3 * width или же 16 * height == 9 * width,

Помните определение Рациональное число: Это класс эквивалентности пар целых чисел (м, N) с учетом эквивалентности (м, N) ≡ (м», N‘) если и только если N‘ м знак равно N м».

10

Другие решения

Вы можете сделать так, чтобы округление всегда было одинаковым, а затем вы можете сравнить значения:

float ratio = (int)((width / height) * 100);

Вы всегда получите 177 за 16: 9 и 133 за 4: 3

удачи

2

сравните с некоторой эпсилон близостью.

должно быть что-то вроде:

double epsilon = 0.01;
if(math.abs(screen1.height/screen1.width - screen2.height/screen2.width) < epsilon)
{
//equal ratios
}
0

Вы должны использовать значение эпсилона для сравнения.
Вы можете взглянуть на: http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

0