代码之家  ›  专栏  ›  技术社区  ›  Primdonm

如何将自定义列表中的字符串值格式化为货币格式?

  •  0
  • Primdonm  · 技术社区  · 1 年前

    我知道这可能是一个重复的问题,对此我感到抱歉。我一直在寻找一种格式化自定义字符串的方法,即从SQL数据库中提取值。我读过很多关于格式的S.O.,但都没有成功。

    理想情况下,我希望字符串值接近999888432.23美元(这个值只是一个占位符)。

    以下是我尝试格式化此字符串值的方法之一,我只是不明白为什么有0个更改。

    当前的字符串值输出大约是592115500000000(例如,我试图删除的后面总是有5-10个0)。

    如果你需要更多信息,请告诉我。

    for (int i = 0; i < Sort_List.Count; i++)
    {
        Sort_List[i].DollarsOpen = string.Format("{0:0.00}", Sort_List[i].DollarsOpen);
    }
    

    更新1:以下是来自数据库的所有转换的数据类型。最初DollarsOpen是十进制

    public class JTPosOpen
    {
        public string PoDate;
        public string VendorNo;
        public string Vendor;
        public string PONumber;
        public string POLine;
        public string QtyOrdered;
        public string QtyReceived;
        public string QtyRemaining;
        public string UOM;
        public string ExpUnitCost;
        public string DollarsOpen;
        public string GLAcct;
        public string GLCtr;
        public string JobNo;
        public string ItemNo;
        public string Desc1;
        public string Desc2;
        public string RequestDate;
    }
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Victor    1 年前

    保存货币的更好的数据类型是 decimal .

    因此,保持数据为十进制,必要时将其转换为字符串:

    decimal price = 123456.4444m;
    Sort_List[i].DollarsOpen = $"{price:C}";
    

    此处的格式化值为 "$123,456.44" .


    如果环境中的当前区域性使用不同于“$”的货币符号,则可能需要指定“CultureInfo”:
    Sort_List[i].DollarsOpen = price.ToString("C", new System.Globalization.CultureInfo("en-US"));