比较给定宽度和高度的纵横比

时间:2012-09-24 12:54:36

标签: c++ aspect-ratio

鉴于屏幕尺寸列表,我如何检测哪些屏幕尺寸为4:3 16:9? 我可以使用宽度/高度来获得它但是对于16:9大小我有时会得到1.778,有时由于舍入错误我得到1.777778。

4 个答案:

答案 0 :(得分:10)

检查4 * height == 3 * width16 * height == 9 * width

记住有理数的定义:它是一对等价类的整数对( m n )受等价( m n )≡( m ', n ')当且仅当 n < / EM> ' = 名词 '。

答案 1 :(得分:2)

您可以强制舍入始终相同,然后您可以比较值:

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

对于16:9,您将始终获得177,而对于4:3,您将获得133

祝你好运

答案 2 :(得分:0)

与某些epsilon接近度进行比较。

应该是这样的:

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

答案 3 :(得分:0)

您必须使用epsilon值进行比较。 您可以查看:http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm