2012-06-08 2 views
2

Я использую этот код для вычисления площади треугольника со значениями 2, 2 и 1. Когда я делаю расчет в своем карманном калькуляторе, я получаю 0,97, но в C# это 0 Я думаю, что это связано с округлением десятичных знаков, но я изменил последнее значение с i и выше, но все равно получаю 0 в результате! Что я делаю не так? Помогите избежать! Благодаря!Расчет площади треугольника

double i = (valueA + valueB + valueC)/2; 
return Math.Round(Math.Sqrt(i * (i - valueA) * (i - valueB) * (i - valueC)),1); 

ответ

8

Деление на 2.0 или 2d или 2D

Причина: целочисленное деление дает только целую часть и удаляет дробную часть.

2 - целое число. 2.0 - двойное значение.

double i = (valueA + valueB + valueC)/2.0; 

ИЛИ

double i = (valueA + valueB + valueC)/2d; 

ИЛИ

double i = (valueA + valueB + valueC)/2D; 

Вторая линия остается той же

return Math.Round(Math.Sqrt(i * (i - valueA) * (i - valueB) * (i - valueC)),1); 
+0

Или явно использовать суффикс 'D', например. '2D'. – Polynomial

+0

@Полиномиальный: 2D или 2d? –

+0

Либо в порядке. Я предпочитаю 2D, поскольку он делает его более очевидным как суффикс. – Polynomial

2

Пожалуйста, попробуйте (valueA + valueB + valueC)/2.0.

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