为什么此消息在吐司消息中显示0?

时间:2018-12-16 14:37:26

标签: android android-studio

为什么会返回0?

Toast.makeText(this, "" + 109 / (7 + 109) * 100, Toast.LENGTH_SHORT).show();

当我在计算器上尝试此操作时,它可以正确输出,但是代码显示为0。出了什么问题?

谢谢,我希望你能帮助我。

3 个答案:

答案 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();