回答を小数点以下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();
int
で割っていますが、結果としてint
を返します。 (13/7 = 1になる)
最初に浮動小数点にキャストしてみてください:
_averagesDoubles = (sumInt / (double)ratingListBox.Items.Count);
_
averagesDoubles = Math.Round(averagesDoubles, 2);
は、double値の丸めを担当します。 _5.976
_は_5.98
_に丸められますが、これは値の表示には影響しません。
ToString()
は、小数の表示を担当します。
試してください:
_averagesDoubles.ToString("0.0");
_
averagesDoubles
が Math.Round の定義に従ってdoubleまたはdecimalであることを確認し、これらの2行を結合します。
averagesDoubles = (sumInt / ratingListBox.Items.Count);
averagesDoubles = Math.Round(averagesDoubles, 2);
宛先:
averagesDoubles = Math.Round((sumInt / ratingListBox.Items.Count),2);
上記の場合の2は、切り上げたい小数の数を表します。詳細については、上記のリンクを確認してください。
int除算は常に小数部を無視します
(sumInt / ratingListBox.Items.Count);
ここでsunintはintであり、ratingListBox.Items.Counもintであるため、divisonは小数になりません
fractionの値を取得するには、floatのようなデータ型とsumIntをキャストし、floatとdoubleにカウントしてからdivisonを使用する必要があります
var val = Math.Ceiling(100.10m);結果101