Отдел возвращает ноль

У меня такой простой расчет, возвращающий ноль, не может понять это

decimal share=(18 / 58)*100; 

Здесь вы работаете с целыми числами. Попробуйте использовать десятичные знаки для всех чисел в вашем расчете.

  decimal share = (18m/58m)*100m; 

18 / 58 – целочисленное деление, которое приводит к 0.

Если вы хотите десятичное деление, вам нужно использовать десятичные литералы:

 decimal share = (18m / 58m) * 100m; 

Поскольку некоторые люди связывают это с почти любым streamом, где результат вычисления равен 0, я добавляю это как решение, так как не все остальные ответы относятся к сценариям случая.

Понятие необходимости выполнения расчетов по различным типам для получения этого типа в качестве результата применяется, однако выше только показывает «десятичный» и использует его короткую форму, такую ​​как 18m качестве одной из переменных, подлежащих вычислению.

 // declare and define initial variables. int x = 0; int y = 100; // set the value of 'x' x = 44; // Results in 0 as the whole number 44 over the whole number 100 is a // fraction less than 1, and thus is 0. Console.WriteLine( (x / y).ToString() ); // Results in 0 as the whole number 44 over the whole number 100 is a // fraction less than 1, and thus is 0. The conversion to double happens // after the calculation has been completed, so technically this results // in 0.0 Console.WriteLine( ((double)(x / y)).ToString() ); // Results in 0.44 as the variables are cast prior to calculating // into double which allows for fractions less than 1. Console.WriteLine( ((double)x / (double)y).ToString() ); 

Потому что числа являются целыми числами, и вы выполняете целочисленное деление.

18 / 580 в целых делениях.

десятичная доля = (18 * 100) / 58;

Всякий раз, когда я сталкиваюсь с такими ситуациями, я просто поднимаю числитель.

 double x = 12.0 / 23409; decimal y = 12m / 24309; Console.WriteLine($"x = {x} y = {y}"); 
  • C # https логин и файл загрузки
  • Изменение шрифта для richtextbox без потери форматирования
  • Что делает ключевое слово «new» для структуры на C #?
  • EF Code-First Индивидуальное отношение: множественность недействительна в Role * in relationship
  • Обеспечение только одного экземпляра приложения
  • Использование regex lookbehinds в C ++ 11
  • Преобразование int в бит-массив в .NET.
  • Безглавой браузер для C # (.NET)?
  • В C, почему я не могу назначить строку массиву символов после ее объявления?
  • Слияние 2 DataTables и сохранение в новом
  • Сортировка std :: map с использованием значения
  • Давайте будем гением компьютера.