簡體   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