gpt4 book ai didi

objective-c - 将数字列表四舍五入到用户定义的步骤,同时保留它们的总和

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:16 28 4
gpt4 key购买 nike

我已经阅读了很多关于四舍五入数字的帖子,但我无法做到我想做的事:

我有一个正 float 列表。要使用的无符号整数 roundOffStep 是用户定义的。我无法控制它。

我希望能够进行最准确的舍入,同时保留这些数字的总和,或者至少同时保持新总和低于原始总和。

我该怎么做?我不擅长算法,所以这对我来说太棘手了。

谢谢。

编辑:添加测试用例:

FLOATS
29.20
18.25
14.60
8.76
2.19

总和 = 73;

假设 roundOffStep = 5;

ROUNDED FLOATS
30
15
15
10
0

总和 = 70 < 73 OK

最佳答案

  1. 通常将所有数字四舍五入到最接近 roundOffStep 的倍数。
  2. 如果新总和低于原来的总和,您就完成了。
  3. 对于每个数字,计算rounded_number - original_number。将此差异列表按降序排列,以便您可以找到差异最大的数字。
  4. 选择给出最大差异的数字 rounded_number - original_number,然后从该数字中减去 roundOffStep
  5. 重复第 4 步(每次都选择下一个最大的差异),直到新的总和小于原来的总和。

此过程应确保四舍五入的数字尽可能接近原始数字,而不超过原始数字。

例如,roundOffStep = 5:

    Original Numbers  |   Rounded  |  Difference
----------------------+------------+--------------
29.20 | 30 | 0.80
18.25 | 20 | 1.75
14.60 | 15 | 0.40
8.76 | 10 | 1.24
2.19 | 0 | -2.19
----------------------+------------+--------------
Sum: 73 | 75 |

总和太大,所以我们选择给出最大差异的数字(18.25,四舍五入为 20)并减去 5 得到 15。现在总和为 70,所以我们完成了。

关于objective-c - 将数字列表四舍五入到用户定义的步骤,同时保留它们的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6800863/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com