列表到货币的前两个值

时间:2016-10-26 02:41:30

标签: c# string model-view-controller

我有一个填充了小数的字符串列表,只有前两个值必须是货币而其他值必须取小数

这是字符串列表

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>

但这只会使货币的值小于“ .00 ”,但有时候我的列表前两个值为“ .00 ”他们没有得到货币变化

我如何存档?

1 个答案:

答案 0 :(得分: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 + "";
            }
        }
    }
}