2011-12-14 5 views
0

私は2つの数字を取る方法があります。最初の数値は設定(または書式設定)する値で、2番目の数値は使用する精度です。フォーマットが可変のときにDoubleをフォーマットする方法は?

public double ReduceNumber(double Test, int Precision) 
{ 
} 

のは、私はパラメータ125.60238674に渡しましょう。戻り値は125.6023です。私はVBでFormatNumber()関数を使用する方法を知っていますが、今はC#に変換しようとしています。私は空白を描いています。オンラインで見つけることができるのはString.Format()ですが、定期的に変更できるフォーマットをコーディングする方法はわかりません。

+1

あなたは 'STRING'または返される' double'が必要ですか? – Oded

+1

"Reduce"は混乱します。どちらの場合でも 'Math.Round()'を使うか、表示する数値の文字列表現を作成しています。その場合は 'double.ToString()'を使うべきです。 。 – phoog

+0

あなたのメソッドにはいくつかの文章上の問題があります:1)パラメータ名はlowerCaseでなければなりません。 2) 'precision'の名前を' fractionalDigits'のように変更します。なぜなら私は 'precision'を桁数の合計として理解するからです。そしてその方法もより良い名前を持つべきです。 3)10進表記を気にするときは 'double'を返さないでください。これには 'decimal'型があります。 – CodesInChaos

答えて

4

フォーマットされた文字列:これは、精度指定子でstandard numeric format string "F" を使用している

public string ReduceNumber(double Test, int Precision) 
{ 
    return Test.ToString(string.Format("F{0}", Precision)); 
} 

Aは、二重丸め:

public double ReduceNumber(double Test, int Precision) 
{ 
    return Math.Round(Test, Percision); 
} 

スタイルについてのポイント - パラメータの名前は、通常はC#でpascalCaseされています。

0

ここでは、私が書いた簡単な方法 "、" 10000のような数字に10,000を返す、 もstring.Format {"0:d"}を使用して検索します。 これは私も、私はpercisionを追加しませんでしたが、それは同様の方法に渡すことができ承知していますちょうどアイデア...

public static string FormatNumberWithCommas(string inputString) 
    { 
     string tempString; 
     tempString = string.Format("{0:###.####}", Convert.ToInt32(inputString)); 
     return tempString; 
    } 
関連する問題