如何从 int 数组向下舍入到最接近的整数?
我正在用 Java 设计一个捐赠插件,用户可以从中捐赠自定义金额。通过捐赠,您可以从某些包裹中获得好处。
我想做的是将整数n向下舍入到最接近的捐赠包。
例如,可能有 3 个捐赠包,全部表示为整数。捐款包有 5 美元、10 美元和 20 美元。如果用户捐赠 13 美元,我希望插件将其四舍五入为 10 美元,因为这是最近的捐赠包。
I'm designing a donation plugin in Java, from which a user can donate a custom amount. From donating, there are benefits you receive from certain packages.
What I wish to do, is round down an integer n, to the nearest donation package.
For example, there might be 3 donation packages, all represented as integers. There are the $5, the $10, and the $20 donation packages. If a user donates $13, I want the plugin to round that down to $10, as that is the nearest donation package.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
嗯,我今天有一些空闲时间。 (:
关心捐赠数组的顺序是递增的。否则只需先对其进行排序甚至更简单:
Well, I have some free time today. (:
Care for the donation array is increasing order.. else just sort it firstor even simpler this:
将所有值放入
TreeSet
中,然后使用Put all the values in a
TreeSet<Integer>
, then use我不知道为什么不是这个?
I'm not sure why not this?
尝试将其除以 10,四舍五入到最接近的整数,然后再次乘以 10。
例如。
或
当然,这仅适用于 10 枚的捐赠包。
Try dividing it by 10, rounding it to the nearest integer and then multiply it again by 10.
eg.
or
Of course this will only work in donation packages of 10s.
您可以对捐赠数组使用二分搜索,找到新捐赠值所在的索引,然后使用 if-else 轻松地从两个值中做出决定。
编辑:您需要事先对数组进行排序。
You can use binary search on donations array and find the indexes between which your new donation value lies and then decide from the two values easily using if-else.
Edit: you need to have array sorted before hand for it.