计算一个数字的标准化科学计数法和工程科学计数法的最快算法

3

测试用例 :

35000

-> 该数字的标准科学计数法为3.5 * 10E4

-> 工程计数法为35 * 10E3

一个简单的算法可以通过不断地将数字除以10来得到所需的表示法。然而,这意味着该算法的时间复杂度将是O(零的数量)。我们能做得更好吗?


如果它是一个双精度浮点数,你可以直接提取尾数来得到一个非常好的第一近似值,但这在极端端点处会失效,因为双精度浮点数不再被规范化存储。 - Roman Starkov
1
假设log的实现很快,int exp = floor(log(x))和expEng = 3 (exp / 3)。 - Adam Liss
@ Adam,问题是日志的效率有多高? - unj2
1个回答

7

有关打印人性化表示的浮点数的经典论文可以在此处阅读(链接)。这篇论文太复杂了,无法在此回答中作为代码进行讨论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接