2016-12-26 3 views
0

に私は、小数点後の値が0である場合にのみ、数値をフォーマットする必要が2つのdouble小数点位置はゼロかいないのC#

double d1 = 3456786.065343 

double d2 = 4848484.000000 

は、2つのゼロ小数点以下の桁数に切り上げてきている4848484.00

を例えば小数点以下の数字がゼロでない場合、あなたは小数が整数であるかどう小数は、小数点の後に0以外のいくつかの数字を保持している場合otherwisながら、それが整数でない確認することができます任意の書式設定 例:3456786.065343

+0

、SO [この回答](HTTPのように、小数点以下を得ることにあなたにいくつかのトリックを与える掘り:// stackoverflowの。 com/questions/6092243/c-sharp-check-of-a-a-a-decimal-than-3-decimal-places) –

+0

また、その精度のレベルに興味があるならば、 「ダブル」。 –

+0

私の答えはあなたに有益でしたか? @キサン –

答えて

1

を適用いけません小数が3456786.065343のようなものであるならば、それはあるように、これはそれを印刷します

decimal d1 = 3456786.065343M; 
      if((d1 % 1) == 0) 
      { 
       Console.WriteLine(decimal.Round(d1, 2, MidpointRounding.AwayFromZero)); 
      } 
      else 
      { 
       //prints 3456786.065343 
       Console.WriteLine(d1.ToString()); 
      } 

decimal d = 4848484.000000M; 
     if((d % 1) == 0) 
     { 
     // prints 4848484.00 
      Console.WriteLine(decimal.Round(d, 2, MidpointRounding.AwayFromZero)); 
     } 
     else 
     { 
      Console.WriteLine(d.ToString()); 
     } 

第二ケース:eは真

最初のケースとなります。

と小数が4848484.000000ようであれば、あなただけの0.00########のフォーマット文字列を使用して、表示のための数値をフォーマットするために探しているなら、これは4848484.00

0

を印刷します。これにより、小数点以下2桁以上が表示されます。番号は10進浮動ポイントを持っているかどうかをチェック

var s1 = d1.ToString("0.00####"): 
0

は非常に簡単です:だけでなく

private void Foo() 
     { 
      double d2 = 4848484.000000; 

      if (d2 - Math.Round(d2) != 0) 
      { 
       Console.WriteLine(d2.ToString()); 
      } 

      else 
      { 
       Console.WriteLine(d2.ToString("0.00####")); 
      } 
     } 
関連する問題