2010-05-31 107 views
1

如果我有一个介于100和1000之间的数字,我希望得到值3,因为10^3 = 1000.同样,如果我有一个介于10和100之间的数字,我希望得到值2,因为10^2是100.C#登录基数10并四舍五入到最接近的10?

Incase你想知道,它与计算概率有关,我总是需要通过10 ^值除以保持0和1之间的概率。例如,如果我计算9256,我需要除以10^4,这样我得到0.92的概率

我不知道如何做四舍五入,如何做基地10,请问有人可以帮忙吗?

+0

[步骤的数学函数]的可能重复(http://stackoverflow.com/questions/2907949/step-math-function) – 2010-05-31 01:06:06

+0

应该在10到10(因此有1.0的概率)或100(概率为0.1)? – 2010-05-31 01:09:32

回答

3

为什么你不能把数字的日志,然后把它整理?日志9256会给你3.966,四舍五入(如果你想添加一个并将其整除),然后除以10得到4的幂......你实际上自己回答了这个问题。

9
Math.Ceiling(Math.Log10(x)) 
1

使用对数可以工作,但是您还需要考虑其余的计算。划分出10个权力可能对您简单:

double Scale(double x) 
{ 
    if(x <= 0} { return 0; } 

    while(x > 1.0) 
    { 
     x /= 10.0; 
    } 

    return x; 
} 
+0

是的...这个解决方案可能更有效率。 – mpen 2010-05-31 00:35:32