2012-01-20 33 views
0

小数部分を切り捨てようとしています。小数点以下を切り捨てる方法は?

これは、これを行う関数を作成することを意味します。だから、

1/9〜0.11111111111111

、5つの小数を選択したい機能のセットであれば、しなければならないが、私は、文字列を使用して、これをやっていた0.11111

を返しますが、私は良いアイデアではないと思います。それは可能ですか?

答えて

5

あなたは

Math.Truncate 

http://msdn.microsoft.com/en-us/library/7d101hyf.aspx

編集を使用することができます(ゲイリーは、すでに以下のものを共有しているが)適切な方法の私のバージョンMath.Truncate()以来

public static double Truncate(double number, int digits) 
    { 
     double conversionFactor = (Math.Pow(10.0, digits)); 
     return Math.Truncate(number * conversionFactor)/conversionFactor; 
    } 
+0

この編集は3時間前と回答が4時間前にあいまいな類似点があります... –

+0

@ Garry-vass:私はもっと早く回答しました(私は最初でした答えは、5時間前です)。私はコード例を提供していないので、私はそうすべきだと思った。投稿すると、すでにあなたが追加したことがわかりました(私の編集では、あなたが既に例を共有していると言いました)。それまで私はあなたのことを見たことがなかった。これはサイトのルールを破っていますか? – NoviceProgrammer

+1

誰かの答えが貴重だと思うなら、自分の答えを自分のコードに複製して変数名を変更するよりも、それをアップヴォートする方がよいでしょう。 –

1

を指定することはできません。あなたが保持したい数字の桁数は、最初に10^dを乗じて、10^dを切り捨ててn、dは保持する小数点以下の桁数です。 nDecimalsによって与えられたvalueの小数部分を切り捨てること

2

は、単に使用:value = 1/9nDecimals = 5場合

value = Math.Truncate(value * Math.Pow(10, nDecimals))/Math.Pow(10, nDecimals); 

をので、それは私が特に私の避難所から、わからないんだけど0.11111

+1

これは中間結果を2回計算します... –

0

を返します。 tをC#にしばらく触れましたが、と思っていますが、Math.Roundを使用できますか?それは使用される方法のようにちょっとhere

Math.Round(0.111111111, 6);を試してみてください。

1

あなたは...のような

private double TruncateAt(double number, double decimals) 
    { 
     double factor = Math.Pow(10, decimals); 
     return Math.Truncate(number*factor)/factor; 
    } 

をメソッドを使用して、あなたのプログラムがそれのconstにするためにあなたがかもしれない、一貫して同じ要素を使用している場合

double x = TruncateAt(1.0/9.0, 5); 

でメソッドを呼び出すことができますし、パフォーマンスの改善を得てください...

関連する問題