给定屏幕尺寸列表,我如何检测哪些屏幕尺寸是 4:3 16:9 纵横比?我可以使用宽度/高度来获得它,但对于 16:9 尺寸,我有时会得到 1.778,有时会因为舍入误差而得到 1.777778。
问问题
3008 次
4 回答
10
检查是否4 * height == 3 * width
或16 * 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 回答