bin float精度数的好方法是什么? 像这样的东西,但也许更有效率?
x = 1;
for i = 0,size-1 { // loop over number of bins
if (value > x) {
++bin[i]; return;
}
x *= 0.1;
}
++bin[size-1]; // increment last bins
我想过直接获得指数frexp
并使用它。
值得吗?
答案 0 :(得分:1)
我会回答这个问题,我认为它可以帮到你:
“给定一个数字x,当用科学记数法写出x时,指数是多少。例如,如果x是.007,则指数是-3(7x10 ^ -3)。”
因此,x = a * 10 ^ b,其中1 <= a <1。 10.我们解决b。
让我们拿两边的日志(基数10)
现在b是整数,并且0 <= log(a)&lt; 1,所以log(a)实际上只是log(x)的小数部分。因此,我们可以通过向下舍入log(x)来删除小数部分。
当x = .007时,b = floor(-2.15)= -3符合预期
我认为C代码是 int b =(int)floor(log10(x))