34

回答を小数点以下 1 桁で四捨五入したいと思います。例: 6.7、7.3 など。ただし、Math.round を使用すると、常に小数点以下の桁数が表示されません。例: 6、7

私が使用したコードは次のとおりです。

int [] nbOfNumber = new int[ratingListBox.Items.Count];
int sumInt = 0;
double averagesDoubles;

for (int g = 0; g < nbOfNumber.Length; g++)
{
    nbOfNumber[g] = int.Parse(ratingListBox.Items[g].Text);
}

for (int h = 0; h < nbOfNumber.Length; h++)
{
    sumInt += nbOfNumber[h];
}

averagesDoubles = (sumInt / ratingListBox.Items.Count);
averagesDoubles = Math.Round(averagesDoubles, 2);
averageRatingTextBox.Text = averagesDoubles.ToString();
4

4 に答える 4

70

で除算するとintintas 結果が得られます。(13 / 7 = 1 になります)

最初に浮動小数点にキャストしてみてください。

averagesDoubles = (sumInt / (double)ratingListBox.Items.Count);

averagesDoubles = Math.Round(averagesDoubles, 2);double 値を丸めます。に丸め5.976られ5.98ますが、これは値の表示には影響しません。

ToString()小数の表示を担当します。

試す :

averagesDoubles.ToString("0.0");
于 2013-09-30T09:03:35.567 に答える
10

Math.RoundaveragesDoubles の定義に従って double または decimal のいずれかであることを確認し、次の 2 つの行を結合します。

averagesDoubles = (sumInt / ratingListBox.Items.Count);
averagesDoubles = Math.Round(averagesDoubles, 2);

に :

averagesDoubles = Math.Round((sumInt / ratingListBox.Items.Count),2);

上記の場合の 2 は、切り上げたい小数点以下の桁数を表します。詳細については、上記のリンクを確認してください。

于 2013-09-30T09:03:14.347 に答える
1

int 除算は常に小数を無視します

 (sumInt / ratingListBox.Items.Count); 

ここで、sunint は int で、ratingListBox.Items.Coun も int であるため、除算が分数になることはありません。

分数で値を取得するには、float のようなデータ型を作成し、sumInt と count を float と double に型キャストしてから、除算を使用する必要があります。

于 2013-09-30T09:03:19.810 に答える