2016-10-06 12 views
-1

私は次のデータベースは、私は私が正しい数値形式のためにフォーマットしようと何をすべきかで正しい答えを得るために1000の数字を乗算する必要があります知っているC#の動的小数点フォーマット

0.0012 
0.00197 
0.002 
0.00011 
0.065000 
0.002001 
0.9624 
1 
1.23 
1.232 
1.5 
1.0924 

値持っています。私は以下のコードのように異なる文字列形式を試しました:

txtTop_Measure.Text = String.Format("{0:f2}", (System.Convert.ToDecimal(_dataRowMeasureData["Top_Measure"]) * 1000)); 

これは私に以下の出力を与えます。いくつかは正しいものであり、そうでないものもあります。

1.20 
1.97 
2.00 
0.11 
0.07 
2.00 
962.40 
1000.00 
1230.00 
1232.00 
1.500.00 
1092.40 

私が必要とする出力は次のとおりですが、以下の出力を得るためにどの文字列フォーマットを使用するかわかりません。

1.20 
1.97 
2 
0.11 
0.0650 
2.0010 
962.40 
1000 
1230 
1232 
1.500 
1092.40 

私はこの問題を解決するためにコミュニティの脳力が必要です。ありがとう

+0

http://stackoverflow.com/questions/9707611/format-decimal-2-places-no-trailing-zeroes?rq=1 - 私は末尾のゼロ – Charleh

+6

を削除する方法については、ここでの答えがありますどの形式をどの番号に使用するかを決める上で明確ではありません。もしそれが小数点を持っていない場合、小数点の後には何もしたくないのですが、端数がある場合には、何個の末尾のゼロが必要なのかはっきりしません。最初は小数点以下の偶数の数字が欲しかったが、「1.500」はそれに合わないだろう。 – juharr

+0

あなたが小数点以下2桁を持っているが、小数点を1桁だけ残している出力のいくつかには良い点@juharrがありますが、末尾に小数点以下はありません。 – Charleh

答えて

0

これは、小数点以下の桁数に応じて文字列を書式設定する方法の例です。最初にモジュロnチェックを実行します。その結果に応じて私はフォーマットを選択します。

 var s = "0.0012"; 
     var x = Convert.ToDecimal(s)*1000%1000 == 0 
      ? String.Format("{0}", Convert.ToInt64(s) * 1000) 
      : String.Format("{0:f2}", Convert.ToDecimal(s) * 1000); 
+0

コードの説明の提供を検討する – ADyson

+0

@ADyson説明が追加されました。 – codelab

関連する問題