繁体   English   中英

如何使用C#将数字格式化为逗号但不包含小数点但已经舍入到非小数点

[英]How to format a number into comma only without decimal point but already round into non decimal point using C#

我想将此ActualSize属性格式化为非小数点但以逗号分隔。 例如。 我有1000.65的值将其转换为1,001而不是1,000

例:

public class Price 
{
    public int Id { get; set; }
    public string Name { get; set; }

    // I want format this ActualSize property into Non Decimal point but have a comma separated. Eg. I have the value 1000.65 convert it into 1,001 and not 1,000 
    public long? ActualSize { get; set; }
}

public List<Product> ListProduct()
{
    List<Product> listProducts = new List<Product>();

    listProducts.Add(new Product {Id = "1", Name = "Product 1" ActualSize = 1000.65 });
    listProducts.Add(new Product {Id = "2", Name = "Product 2", ActualSize = 2443.76 });
    return listProducts;
}

希望这是你正在寻找的:

string formatedOp = 2319000.6.ToString("#,##,##"); // 2,319,001

这是一个有效的例子

但是我仍然没有得到你将要处理long?事情long? 如果出于任何特定原因这意味着请包括原因,以便我可以更新我的答案。 无论如何你不能用逗号存储值,但你可以用逗号打印它们,就像我在上面的例子中所做的那样。

根据修改后的问题进行更新:因此,您的输入包含一些双精度值,并且您希望它们具有指定的格式。 我可以建议一个选项,不知道它是否对你有帮助。 无论如何你可以尝试:

在属性中进行以下更改: - 更改多long? double? 因为你的输入是双倍的。 - 在类中包含一个readonly字符串属性,该属性返回特定的字符串。 - 设置double值时将更新哪个。 简而言之,在应用以下更改后,类将如下所示:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    private string _ActualSizeStr;
    private double? _ActualSize;

    public string ActualSizeStr
    {
        get { return _ActualSizeStr; }
    }

    public double? ActualSize
    {
        get { return _ActualSize; }
        set
        {
            _ActualSize = value;
            if (value.HasValue)
            {
                _ActualSizeStr = value.Value.ToString("#,##,##");
            }
        }
    }

}

因此,当您为ActualSize分配值(让它为2319000.6 )时, _ActualSizeStr将使用所需的值( 2,319,001 )进行更新,以便在检索或使用这些值时,可以使用ActualSizeStr代替ActualSize

您可以像这样使用String.Format():

string areaSize = String.Format("{0:n0}", AreaSize);

您需要使用.ToString重载格式化字符串。

如果您需要空格,则需要一个自定义格式字符串,因为.NET中没有任何内容可以完全按照您指定的内容进行操作。

我实际上出于某种原因认为.NET内置了一个逗号格式,但我没有看到它,如果你不需要以下空格:

1234897.11m.ToString("{0,0}}");

但是,如果你确实需要这些空间,那就更难了(感谢你回答这篇文章 )。

using System;
using System.Globalization;
var nfi = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
nfi.NumberGroupSeparator = " ,";
1234897.11m.ToString("#,0", nfi);

我刚注意到你想要它在你的财产内:

public string FormatedAreaSize
{
   get{return this.AreaSize?.ToString(...);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM