Я хочу рассчитать процент. Мой код:Как рассчитать процент
Bot.Log("[ KEYBOT ] The total is " + (suctrades * totaltrades)/100 + "% !");
Если я это сделаю, я получаю только 0. Что я делаю неправильно?
Я хочу рассчитать процент. Мой код:Как рассчитать процент
Bot.Log("[ KEYBOT ] The total is " + (suctrades * totaltrades)/100 + "% !");
Если я это сделаю, я получаю только 0. Что я делаю неправильно?
Возможно, suctrades * totaltrades
по-прежнему int
. Самый простой способ будет, вероятно, изменить свой код:
((double)suctrades) * totaltrades/100
Или
suctrades * totaltrades/100.0
Заставить с помощью double
вместо int
Спасибо! Это помогло мне –
На SO вам не нужно благодарить, просто отметьте мой ответ или проголосуйте за него –
через 7 минут я могу это сделать –
Try:
Bot.Log("[ KEYBOT ] The total is " + ((double)suctrades * totaltrades)/100 + "% !");
Я полагаю suctrades и TotalTrades не десятичного типа. Это должно исправить это из-за распространения типа при оценке выражения.
Int является целочисленным типом; деление двух ints выполняет целочисленное деление, т. е. дробная часть усекается, поскольку она не может быть сохранена в типе результата (также int!). Десятичная, напротив, имеет дробную часть. Вызывая Decimal.Divide, ваши аргументы int неявно преобразуются в Decimals.
Вы можете применять нецелое деление по аргументам int путем явного литья хотя бы одного из аргументов типа с плавающей запятой, например: 100.0m это отбрасывание до десятичного!
decimal result = suctrades * totaltrades/100.0m
закиньте значение 'double' до умножения –
бы не быть, а' String.Format ("Всего {0: n2}%!", ((Suctrades/(двойной) TotalTrades) * 100,0)) '?? Я считаю, что ваша база просто ложна, если только suctrades * totaltrades не могут превышать 100;) – Icepickle