これについて多くの質問があることは知っていますが、これに関するものは何も見つかりませんでした.
この形式に従って数値をフォーマットしようとしました: value.ToString("N", new CultureInfo("fr-CA"))。値の型は float です。フォーマットは適用されますが、私が考えた方法ではありません。整形についてはこちらの記事を参考にしました
以下に例を示します。
123456 display as 123 456.00
123456.789 display as 123 456.79 // rounded
1234.5 display 1 234.50 //added a 0 padding
このようなものをフォーマットする方法はありますか?
123456 display as 123 456
123456.789 display as 123 456.789
1234.5 display as 1 234.5
フォーマットを適用しようとしたコードは次のとおりです
private void dgvform_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
float val;
if ( (e.ColumnIndex == valeur.Index || e.ColumnIndex == valeurEN.Index)
&& dgvform.Rows[e.RowIndex].Cells[type_d.Index].Value != null && dgvform.Rows[e.RowIndex].Cells[type_d.Index].Value.ToString() == "N"
&& dgvform.Rows[e.RowIndex].Cells[valeur.Index].Value != null
&& float.TryParse(dgvform.Rows[e.RowIndex].Cells[valeur.Index].Value.ToString(), out val))
{
if (e.ColumnIndex == valeurEN.Index)
e.Value = val.ToString("N", new CultureInfo(_formatEN));
else
e.Value = string.Format("{0:# ### ###.####}", val);
}
}
これはデータグリッドビューの一部です。大きなif
問題は、このセルに書式を適用する必要があるかどうかを判断することです。valeur
、valeurEN
両方の列で、書式設定を適用する必要がありました。e.Value = val.ToString("N", new CultureInfo(_formatEN));
フォーマットを適用する古い方法です。_formatEN
基本的に「en-US」です。
基本的に、私は千の区切り記号を追加したいと思います。
/edit :値は float 型です