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);
4

2 に答える 2

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;

2行目はそのまま

return Math.Round(Math.Sqrt(i * (i - valueA) * (i - valueB) * (i - valueC)),1);
于 2012-06-08T11:24:16.963 に答える
2

試してみてください(valueA + valueB + valueC) / 2.0

于 2012-06-08T11:24:36.120 に答える