我怎样才能得到5或10的下一个最大倍数
从给定的 double
我想根据一些规则获得下一个最高的数字,由于我在描述它们时遇到一些困难,我将通过示例进行说明:
Input Desired output
------- --------------
0.08 0.1
0.2 0.5
5 10
7 10
99 100
100 500
2345 5000
输出在某种意义上应该是“下一个最高的数字” 5或10'的倍数。
我希望这是可以理解的;如果没有,请告诉我。
该实现将在 java 中进行,输入将为正double
。
From a given double
I want to get the next highest number according to some rules which, since I have some difficulty describing them, I will illustrate by examples:
Input Desired output
------- --------------
0.08 0.1
0.2 0.5
5 10
7 10
99 100
100 500
2345 5000
The output should be in some sense the 'next highest multiple of 5 or 10'.
I hope this is understandable; if not, let me know.
The implementation will be in java and input will be positive double
s.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
或类似的东西:-)
or something like this :-)
这是一个适用于示例数据的函数:
Here's a function that works on the sample data:
伪代码应该是这样的:
对于数字> 1、这样检查:
如果< 5, 5. 如果<10, 10, 如果<10 50、50。
对于数字< 1、这样检查:
如果> 0.5 1.如果> 0.1、0.5。 ETC。
Pseudo code should be something like this:
For numbers > 1, it checks like this:
if < 5, 5. if <10, 10, if < 50, 50.
For numbers < 1, it checks like this:
if > 0.5 1. if > 0.1, 0.5. etc.
如果您打算使用双精度数并需要精确的结果,则所有使用双精度乘法/除法/log10 的方法都不起作用(或者至少难以实现和证明正确性)。多精度算术在这里可能会有所帮助。或者使用这样的搜索:
search_first_greater 可以实现为:
If you intend to use doubles and need precise result, all methods using double-precision multiply/divide/log10 are not working (or at least are hard to implement and prove correctness). Multi-precision arithmetic might help here. Or use search like this:
search_first_greater may be implemented as:
n=round(log10(number))
and checking onlypowers[n-1 .. n]