2012-06-08 2 views
1

Ниже вычисление должно привести к значению 33.3333333, но я не получаю правильный вывод в окне сообщения при привязке для отображения значения.Десятичное значение для строки

Есть ли какие-либо форматирование, которые необходимо выполнить здесь?

decimal result = (1/3)*100; 
MessageBox.Show(result.ToString()); 

enter image description here

+0

'десятичную результат = (1м/3) * 100;' –

+1

http://mathworld.wolfram.com/IntegerDivision.html – Oded

ответ

7

Вы выполняете свой расчет с использованием целых чисел, поэтому результатом является int и преобразуется в decimal на уступки. Начиная с 1/3 уже 0int арифметических), умножая его на 100, ничего там не меняет.

Использование десятичных знаков вместо:

decimal result = (1m/3m) * 100m; 

m суффикс на числовой литерала делает его десятичное.

Включенный комментарий от Kay Zed:

Если вы имеете дело с переменными и не литералы вы можете бросить:

decimal result = ((decimal)a/(decimal)b) * 100m; 
+0

Спасибо, Джои, попробуем это. – yonan2236

+0

Используйте 'decimal a = 1, b = 3' в этом случае. Или то, что предлагает Кей Кейд ниже, в зависимости от того, как выглядит ваш код в этой части. – Joey

+0

@Joey Это будет работать, но '(1m/3m) * 100m' является чуть более последовательным, и быть ленивым в типах defs было то, что в конечном итоге привело Ariane вниз. @ yonan2236 Это не сработает, в том же случае, что и исходный вопрос (читайте великолепный ответ Джои). – flindeberg

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