【发布时间】:2022-01-20 20:50:11
【问题描述】:
今天我需要一个便宜的 log10 函数,我只使用了 int 部分。假设结果是底,那么 999 的 log10 将是 2。我自己写一个函数会有好处吗?如果是这样,哪种方式是最好的选择。假设代码不会被优化。
我想到的 log10 的替代品;
- 使用 for 循环除以或乘以 10;
- 使用字符串解析器(可能非常昂贵);
- 使用整数 log2() 函数乘以常数。
提前谢谢你:)
【问题讨论】:
-
您需要一些快速但未优化的东西,没有特定的语言。祝你好运。
-
你使用什么语言?
-
@Scott Hunter 抱歉,我没有更清楚地解释自己。我的意思是编译器优化。我最感兴趣的是返回整数的高效日志函数的概念。
-
如果您要查找的只是整数日志,请查看:helloacm.com/fast-integer-log10 和 rot47.net/share-picture/37。它们本质上是一样的。一个在 C# 中,一个在 C++ 中。
-
嗯...答案似乎仅限于整数 argument - 但我在问题本身中看不到这个要求。例如,对于像 1.23e-12 这样的数字,要求 10 的幂的整数部分可能很有用......尤其是考虑到“或 乘以 10”作为选项之一在问题中考虑。
标签: c++ optimization integer logarithm