1

给定屏幕尺寸列表,我如何检测哪些屏幕尺寸是 4:3 16:9 纵横比?我可以使用宽度/高度来获得它,但对于 16:9 尺寸,我有时会得到 1.778,有时会因为舍入误差而得到 1.777778。

4

4 回答 4

10

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

记住有理数的定义:它是整数对 ( m , n )等价类n ' m  =  n m '  . 

于 2012-09-24T12:56:16.747 回答
3

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

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

16:9 总是 177 和 4:3 总是 133

祝你好运

于 2012-09-24T13:06:01.993 回答
0

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

应该是这样的:

double epsilon = 0.01;
if(math.abs(screen1.height/screen1.width - screen2.height/screen2.width) < epsilon)
{
//equal ratios
}
于 2012-09-24T12:59:13.147 回答
0

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

于 2012-09-24T12:59:22.430 回答