这更像是一个谜题/逻辑类型的问题,而不是一个编程问题 - 但我希望有人可以提供帮助,因为我很难过。
我从一个整数开始,需要占用它的X%。一旦我得到那个双号,我需要将它舍回到一个整数(称之为Y)。它实际上并不重要,如果我绕它,我并不关心它往哪(上或下),所以使用floor / ceiling将是一个可接受的解决方案 - 我只需要一个int。
稍后在系统中,我将看到int Y,并且需要知道原始数字是什么。在这一点上,如果我知道百分比是什么,我知道我用什么方法得到双int - 如何确定原始数字。
这需要适用于每个原始数字/百分比组合。
示例:
Original number: 997
Percentage: 90
Int-Conversion Method: Floor
997 * .90 = 897.3
floor(897.3) = 897
Y = 897
.. .. 鉴于897,并且知道百分比和整数转换方法,我如何确定原始数字是997?
答案 0 :(得分:2)
997 * .90 = 897.3
floor(897.3) = 897
Y = 897
根据您建议的方法,我将解释为什么无法根据您提供的方法和数据返回确切的数字。
计算百分比很好,而且你留下double
值。然后,您可以使用floor
函数截断一些数据。截断不是bijection,因此您无法从897返回 - > 897.3,因此无法以任何程度的确定性再现原始号码。考虑到您提供的数据规模,您不会出错,但对于较大的值,或者对于需要更高精度的情况,您可能会发现此方法非常类似于猜测工作。
答案 1 :(得分:0)
您可以使用公式
original number = calculated number / percentage
使用您的号码
997 = 897 / 0.90
在原始计算和反向计算中,您需要对答案进行四舍五入。
如果不这样做,当你进行反向计算时,你会更频繁地离开。