Android数学:240/1080 * 1080 = 0?

时间:2014-12-29 12:39:20

标签: android math

我正在尝试计算不同屏幕尺寸的px。现在我有一个问题,在我的屏幕上(1080x1920)公式宽度/ 1080 * 1080 = 1080但另一个屏幕宽度= 240 公式有结果0.有人能解释我为什么会这样吗?我必须为我的价值观选择另一种类型吗?我试过double,float和int。每次240 * 1080/1080的结果为0时。

感谢。

6 个答案:

答案 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.