2014-11-28 2 views
-3

Я хочу рассчитать процент. Мой код:Как рассчитать процент

Bot.Log("[ KEYBOT ] The total is " + (suctrades * totaltrades)/100 + "% !"); 

Если я это сделаю, я получаю только 0. Что я делаю неправильно?

+3

закиньте значение 'double' до умножения –

+0

бы не быть, а' String.Format ("Всего {0: n2}%!", ((Suctrades/(двойной) TotalTrades) * 100,0)) '?? Я считаю, что ваша база просто ложна, если только suctrades * totaltrades не могут превышать 100;) – Icepickle

ответ

0

Возможно, suctrades * totaltrades по-прежнему int. Самый простой способ будет, вероятно, изменить свой код:

((double)suctrades) * totaltrades/100 

Или

suctrades * totaltrades/100.0 

Заставить с помощью double вместо int

+0

Спасибо! Это помогло мне –

+0

На SO вам не нужно благодарить, просто отметьте мой ответ или проголосуйте за него –

+0

через 7 минут я могу это сделать –

0

Try:

Bot.Log("[ KEYBOT ] The total is " + ((double)suctrades * totaltrades)/100 + "% !"); 

Я полагаю suctrades и TotalTrades не десятичного типа. Это должно исправить это из-за распространения типа при оценке выражения.

0

Int является целочисленным типом; деление двух ints выполняет целочисленное деление, т. е. дробная часть усекается, поскольку она не может быть сохранена в типе результата (также int!). Десятичная, напротив, имеет дробную часть. Вызывая Decimal.Divide, ваши аргументы int неявно преобразуются в Decimals.

Вы можете применять нецелое деление по аргументам int путем явного литья хотя бы одного из аргументов типа с плавающей запятой, например: 100.0m это отбрасывание до десятичного!

decimal result = suctrades * totaltrades/100.0m 
Смежные вопросы