2016-10-26 17 views
1

私はウィッヒで小数ので満たされた文字列のリストを持っている他の人がこれは文字列のリストである最初の2つの値

を小数を取り出す必要がありながら、それだけ最初の2つの値が通貨である必要があります

2451.37 
1678.00 
12.00 
90.00 
10.00 

は私がする出力を行う必要があります。

$2,451.37 
$1,678.00 
12 
90 
10 

私はこれをしようと試みてきました

<h4 class="semi-bold"> 
     @if (haveDataDay) 
     { 
      @valueDateDay.ToString(valueDateDay % 1 == 0 ? "N0" : "C2") } 

     else 
     { @this.FP("lbl.loader.nodata") } 
    </h4> 
</div> 

しかし、これは「0.00」以外の小数を持つ通貨の値になりますが、時には私のリストは、彼らが通貨の変更

を得るいけないウィッヒの場合は「 0.00」と最初の2つの値を持っています

これはどのようにアーカイブできますか?

+0

必須の属性を含むオブジェクトに、その文字列のリストを充実させることはできませんか?そうすれば、あなたのコンバータ/フォーマッタロジックはもっと簡単になります。そしておそらくもう少しMVVMに優しい... – code4life

答えて

1

文字列を倍精度に変換し、組み込みの書式設定ツールを使用することができます。通貨と丸め/数字切り捨ての両方を処理する.NETメソッドがあります。

using System; 
using System.Collections.Generic; 
using System.Globalization; 

namespace CurrencyFormatting_StackOverflow 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var strings = new List<string>() 
      { 
       "2451.37", 
       "1678.00", 
       "12.00", 
       "90.00", 
       "10.00" 
      }; 
      FormatStrings(strings); 
      string display = string.Join("\n", strings); 
      Console.WriteLine(display); 
      /* 
      * $2,451.37 
      * $1,678.00 
      * 12 
      * 90 
      * 10 
      */ 
      Console.ReadKey(); 
     } 

     private static void FormatStrings(List<string> strings) 
     { 
      int index = 0; 
      for (; index < 2; index++) 
      { 
       string s = strings[index]; 
       double d = double.Parse(s); 
       string currency = d.ToString("C2", CultureInfo.CreateSpecificCulture("en-US")); 
       strings[index] = currency; 
      } 
      for (; index < strings.Count; index++) 
      { 
       string s = strings[index]; 
       double d = double.Parse(s); 
       double rounded = Math.Round(d, 2); 
       strings[index] = rounded + ""; 
      } 
     } 
    } 
} 
関連する問題