相关疑难解决方法(0)

计算一个圆形数量级

对于一个简单的项目,我必须使大数字(例如4294967123)可读,所以我只写前缀的第一个数字(4294967123 - > 4.29G,12345 - > 12.34K等)

代码(简化)如下所示:

const char* postfixes=" KMGT";
char postfix(unsigned int x)
{
     return postfixes[(int) floor(log10(x))];
}
Run Code Online (Sandbox Code Playgroud)

它可以工作,但我认为有一个比计算完整精度对数更优雅/更好的解决方案,将其四舍五入并再次将其转换为int.

我想到的其他解决方案:

int i=0;
for(; x >= 1000 ; ++i) x/=1000;
return postfixes[i];
Run Code Online (Sandbox Code Playgroud)

(这明显慢,但更容易阅读)

这些数字根据本福德定律分布,并且数字应该被视为无符号64位数,因为在10 ^ x附近不应该有舍入误差(例如在python math.log(1000,10)返回2.999996,它被置于2).我有什么快速,准确的其他方式吗?

c precision performance

2
推荐指数
1
解决办法
8249
查看次数

标签 统计

c ×1

performance ×1

precision ×1