我正在尝试使用跟随代码来生成十进制数,但是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();
}
答案 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时不抛出异常的良好属性。