我正在尝试计算不同屏幕尺寸的px。现在我有一个问题,在我的屏幕上(1080x1920)公式宽度/ 1080 * 1080 = 1080但另一个屏幕宽度= 240 公式有结果0.有人能解释我为什么会这样吗?我必须为我的价值观选择另一种类型吗?我试过double,float和int。每次240 * 1080/1080的结果为0时。
感谢。
答案 0 :(得分:1)
你可能正在使用整数除法。
尝试将.0添加到其中一个值上。
e.g。
240.0 / 1080.0 * 1080.0
这告诉它使用双重划分。如同一个双重在等式中
答案 1 :(得分:0)
您使用整数,因此结果也是整数。 240/1080 = 0,原因0.xxx不是整数。你应该写下一个:
float smthng = width / 1080f * 1080f
它将为您返回正确的结果。
答案 2 :(得分:0)
我想到两个选择:
1)你的价值四舍五入
int 1080除以int 1080得到1
int 240除以int 1080得到0
2)另一个屏幕不支持你用来获取宽度的函数和一些你得零的函数。
如果您发布用于获取值的代码行并进行计算,这将有所帮助。
答案 3 :(得分:0)
试试这个1.0 * 240/1080*1080
您需要使用浮点类型
答案 4 :(得分:0)
您使用的是哪种语言? 如果您使用:
int width = 1024;
float ratio = width / 1080 * 1080;
比率= 0.0(宽度整数除以1080,结果为0)
尝试使用:
float ratio= (width/1080.0)*1080.0
另一点是:你为什么试着计算(A / B)* B?它始终是A!
答案 5 :(得分:0)
无论您为结果选择何种类型,您提供的操作数都是整数。只有计算结果才会从int升级到float - 此时它已经为0(因为240/1080在整数运算中为0)。请注意,除数在乘法之前发生,因为/和*的operator precedence相等,因此表达式只是从L到R进行求值。
如果要使用浮点,请使用
提供浮点输入float result = 240.0 / 1080.0 * 1080.0
最简单的解决方案是继续使用整数运算并以不同的顺序运行计算,如
int result = (240 * 1080)/1080.