2010-05-31 4 views
1

если у меня есть число от 100 до 1000, я хочу получить значение 3, потому что 10^3 = 1000. Точно так же, если бы у меня было число от 10 до 100, я бы хотел получить значение 2, потому что 10^2 100.C# log base 10 и округление до ближайшей мощности 10?

Incase, о котором вы думаете, это нужно сделать с вычислением вероятности, и мне всегда нужно разделить значение 10 ^, чтобы сохранить вероятность между 0 и 1. Например, если я вычислил 9256, мне нужно разделите на 10^4, так что я получу вероятность 0,92

Я не уверен, как выполнить округление и как сделать базу 10, может кто-то помочь?

+0

возможно дубликат [Шаг математической функции] (http://stackoverflow.com/questions/2907949/step-math-function) –

+0

Должен ли 10 перейти к 10 (и, следовательно, имеют вероятность 1,0) или 100 (и имеют вероятность 0,1)? –

ответ

3

Почему вы не можете просто взять журнал номера, а затем округлить его? Log 9256 даст вам 3.966, округляет его до 4 (добавьте один и целяйте его, если хотите), а затем разделите на 10 на мощность 4 ... вы практически ответили на вопрос самостоятельно.

1

Использование логарифма будет работать, но вам также нужно будет рассмотреть остальные вычисления. Деление из полномочий 10 может быть проще для вас:

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

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

    return x; 
} 
+0

Да ... это решение, вероятно, более эффективно. – mpen

Смежные вопросы