我想测试数字double x是否为10的整数次幂。我也许可以使用cmath的log10,然后测试x == (int) x

编辑:实际上,我的解决方案不起作用,因为double可以很大,比int大得多,也可以像分数一样很小。

最佳答案

查找表是迄今为止最快,最精确的方法。只有约600的10的幂可以表示为两倍。您可以使用哈希表,或者如果该表按从小到大的顺序排列,则可以使用二进制印章快速搜索它。

这样的好处是,当且仅当您的数字恰好是IEEE的两倍至10的幂时,您才会获得“成功”。如果这不是您想要的,则需要更精确地确定自己的方式希望您的解决方案能够处理许多10的幂不能精确表示为double的事实。

构造表的最佳方法可能是使用字符串->浮点转换;这样,希望您的图书馆作者已经解决了如何进行转换的问题,并给出了最精确的答案。

关于c++ - C++:如何测试数字是否为10的幂?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2551657/

10-11 22:36