【问题标题】:Why does this expression keep evaluating to 0 [duplicate]为什么这个表达式一直评估为 0 [重复]
【发布时间】:2015-11-20 00:33:03
【问题描述】:

即使 player1Disks 和 player2Disks 都大于零且彼此不相等,以下value1 的评估结果仍为 0。

int value1 = Math.round(100 * ((player1Disks - player2Disks)/(player1Disks + player2Disks)));`

以下是player1Disksplayer2Disks 的一些示例输入: [5,8], [6,8], [8,4], etc.

但是,所有这些都评估为零。我错过了什么吗?

【问题讨论】:

    标签: java math


    【解决方案1】:

    在您介绍的三种情况下,整数除法的计算结果为00*100 仍然等于 0

    你应该先乘以100,然后再除。或者更好的是,不要使用int

    第一个:-3/13 = 0

    第二个:-2/14 = 0

    第三个:-4/12 = 0

    【讨论】:

    • @PM77-1 这些都不是4/3
    • 如何编写这个表达式来获取整数值?
    • 假设您并不真正关心保持高精度,只需转换为 double 并执行双重算术。
    猜你喜欢
    • 1970-01-01
    • 2013-10-20
    • 2017-10-28
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2021-11-01
    相关资源
    最近更新 更多