如何在Java / Android中将100除以110等于小数

时间:2010-08-17 16:32:14

标签: java math

我正在尝试使用跟随代码来生成十进制数,但是l除以h(低到高)的评估总是为0。

我该如何纠正?谢谢!

EditText marketValLow = (EditText) findViewById(R.id.marketValLow);
            EditText marketValHigh = (EditText) findViewById(R.id.marketValHigh);
            String valLow = marketValLow.getText().toString();
            String valHigh = marketValHigh.getText().toString();
            int l = Integer.parseInt(valLow);
            int h = Integer.parseInt(valHigh);

            if (valLow.trim().equals("") || valHigh.trim().equals("")) {

                Toast.makeText(CurrentMarketValue.this, "You need to enter a high AND low." + valLowIndex, Toast.LENGTH_SHORT).show();

            } else if ((l / h) < .9) { 

                Toast.makeText(CurrentMarketValue.this, "The range between your value cannot be more than 10%." + (l / h), Toast.LENGTH_SHORT).show();

            }

7 个答案:

答案 0 :(得分:9)

(int / int)将产生一个int。

而是执行:double result = ((double)l) / ((double) h);而不是检查(l / h)而是检查result

答案 1 :(得分:4)

double val = ((double)l)/h

答案 2 :(得分:4)

你在做integer division。强制/的一个操作数是双重的。

((double)l / h)

答案 3 :(得分:2)

它是许多类型语言的基本部分。整数除法显示整个除法的结果。在你的情况下,你可以使它为1.0 / h或类型转换其中一个数字浮动或加倍。

答案 4 :(得分:2)

只是与所有其他答案形成鲜明对比:

if ((l * 10) < (h * 9))

不是说它更好(事实上如果l或h有可能超过2亿这是坏的),只是不同。

答案 5 :(得分:1)

它会使用一个整数,其中float或double会更好。

答案 6 :(得分:1)

我认为JeremyP是对的。 TomTom为什么说这是错的? 以下都是等价的,通过不等式的性质(将两边乘以相同的正数...假设h> = 0):

(l / h) < .9
l < (.9 * h)
(l * 10) < (h * 9)

后者还具有在h = 0时不抛出异常的良好属性。