为什么会返回0?
Toast.makeText(this, "" + 109 / (7 + 109) * 100, Toast.LENGTH_SHORT).show();
当我在计算器上尝试此操作时,它可以正确输出,但是代码显示为0。出了什么问题?
谢谢,我希望你能帮助我。
答案 0 :(得分:1)
使用计算器答案为0.93,但使用无名指的最后一个数字为3 <5,则值0始终为0,因此它将乘以0 * 100,然后答案将为0
答案 1 :(得分:1)
正确的方法是确保操作中的数字为浮点型,然后使用String.Format方法控制要打印的小数位数。在示例中设置为0小数(%。0f ):
String value = String.format(Locale.getDefault(), "%.0f", 109.0f / (7.0f + 109.0f) * 100.0f);
Toast.makeText(this, value, Toast.LENGTH_SHORT).show();
答案 2 :(得分:0)
存在强制转换问题。当您尝试使用整数完成所有操作时,它只会转换为整数。在此算术运算的中间,有一个类似0.93 *100
的中间状态,但是只有整数存在时,这不是这种方式。将0.93舍入为0
,然后将其乘以100
,这就是发生这种情况的原因。使用以下代码来避免该转换错误。它暗含双打
Toast.makeText(this, "" + 109.0 / (7.0 + 109.0)*100 , Toast.LENGTH_SHORT).show();