双向整数,逻辑问题

时间:2013-03-07 16:59:05

标签: logic

这更像是一个谜题/逻辑类型的问题,而不是一个编程问题 - 但我希望有人可以提供帮助,因为我很难过。

我从一个整数开始,需要占用它的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?

2 个答案:

答案 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

在原始计算和反向计算中,您需要对答案进行四舍五入。

如果不这样做,当你进行反向计算时,你会更频繁地离开。