2016-10-14 3 views
2

objectstringに変換する方法は、値に数値形式を適用していますか?渡されたオブジェクトは数値です。数値であるオブジェクトをフォーマット番号に変換する

私は

private string FormatValue(string field, object[] values) 
{ 
    result = string.Format("n1", values[0]); 
} 

を試してみましたが、しかし、それは代わりにフォーマットされた数値の結果としてn1が得られます。 フォーマットされた数値を取得したい。たとえば、12345を渡すと、私は12 345.0を取得したいと思います。

+0

なぜあなたは '文字列フィールド'を渡しているのですか?インデックス0で1を返すだけのように見える場合、なぜオブジェクトの配列を渡すのですか? – sr28

+0

この例では、関数から他のコンテンツを削除しました。 – Nuts

+0

すべてのタイプの数値を渡しているか、特定のタイプの数値ですか。 int? – sr28

答えて

5

使用

string.Format("{0:n1}", values[0]); 

渡された値が数値ではなく文字列は、あなたが最初にそれを解析する必要がある場合(f.e。Convert.ToDecimal)。

0

方法について:

object value = values[0]; // why an array for one value? 
if(value is IFormattable) { 
    return ((IFormattable)value).ToString("n1", CultureInfo.CurrentCulture); 
} else { 
    return value?.ToString(); 
} 
-1

使用次のようにあなたはそれを書くことができ、文字列の補間を使用して

result = values[0].ToString("n0") 
+0

'object'型のオブジェクトには、パラメータを受け入れる' ToString'メソッドがありません。最初に正しい数値型にキャストする必要があります。 – fknx

1

:あなたはオフに基づいて、このような何かをしたいよう

private string FormatValue(string field, object[] values) 
{ 
    return $"{Convert.ToDecimal(values[0]):n1}"; 
} 
0

はそうあなたのサンプルデータ(整数):

private string FormatValue (object value) 
{ 
    //You can amend this check to another numeric type or add others 
    if (value is int) 
    { 
     return string.Format("{0:n1}", value); 
    } 
    else 
    { 
     throw new System.ArgumentException("object not an integer", value); 
    } 
} 
関連する問題