C# 在Xamarin.Android中,如何在十进制分隔符后显示2或3个数字?

C# 在Xamarin.Android中,如何在十进制分隔符后显示2或3个数字?,c#,.net,xamarin,xamarin.android,decimal,C#,.net,Xamarin,Xamarin.android,Decimal,我有文章模型,它有属性售价。我希望无论在哪里使用它,都能在小数点分隔符后显示2数字。它总是在小数点分隔符后有2数字的值,但当价格例如为2,30时,它显示为2,3,我希望显示为2,30。相同的文章模型中的属性数量也会发生同样的情况。我希望它在小数点分隔符后显示3个数字,例如,如果它的值是1,1,则显示为1100。对于SellPrice我尝试了以下方法: [Column("sell_price")] [XmlElement(ElementName = "sell_price", Namespace

我有
文章
模型,它有属性
售价
。我希望无论在哪里使用它,都能在小数点分隔符后显示
2
数字。它总是在小数点分隔符后有
2
数字的值,但当
价格
例如为
2,30
时,它显示为
2,3
,我希望显示为
2,30
。相同的
文章
模型中的属性
数量
也会发生同样的情况。我希望它在小数点分隔符后显示3个数字,例如,如果它的值是
1,1
,则显示为
1100
。对于
SellPrice
我尝试了以下方法:

[Column("sell_price")]
[XmlElement(ElementName = "sell_price", Namespace = "http://tempuri.org/DataSet1.xsd")]
[DisplayFormat(DataFormatString = "{0:C}")]
public decimal SellPrice { get; set; }
但是
DisplayFormat
带有红色下划线,不允许我使用
System.ComponentModel.DataAnnotations
导入其名称空间。我想它已经过时了。对于在小数点分隔符后显示
3
数字,我甚至没有发现不推荐的东西。我发现很多方法都是使用
String.Format
来实现的,但我在项目中的很多地方都使用
SellPrice
Quantity
,我不希望每次都使用模型属性来编写
String.Format
。。。。。。例如,有没有办法在模型中将其指定为属性

在Xamarin.Android中,如何在十进制分隔符后显示2或3个数字

您可以尝试使用
SellPrice.ToString(“C2”)
,请参阅:

例如:

SellPrice = 12.545646M;
Debug.WriteLine("SellPrice.ToString(C2) == " + SellPrice.ToString("C2"));

[0:] SellPrice.ToString(C2) == ¥12.55
在Xamarin.Android中,如何在十进制分隔符后显示2或3个数字

您可以尝试使用
SellPrice.ToString(“C2”)
,请参阅:

例如:

SellPrice = 12.545646M;
Debug.WriteLine("SellPrice.ToString(C2) == " + SellPrice.ToString("C2"));

[0:] SellPrice.ToString(C2) == ¥12.55

为什么不使用私有字段保存值,并具有两个属性
SellPrice
SellPriceString
,如下所示,这样您就可以重复使用
SellPriceString
属性,而不是每次使用
SellPrice
属性时格式化字符串:

decimal _sellPrice;
public decimal SellPrice
{
    get
    {
        return _sellPrice;
    }
    set
    {
        _sellPrice = value;
    }
}

public string SellPriceString
{
    get
    {
        return _sellPrice.ToString("N2");
    }
}

ToString
方法中使用as参数。您可以对
数量
属性执行完全相同的操作,但使用标准数字格式“N3”,再次参考链接以了解有关格式的详细信息。

为什么不使用专用字段将值保存在中,并具有两个属性
SellPrice
SellPriceString
,如下所示:,这样,每次使用
SellPrice
属性时,您可以重复使用
SellPrice字符串
属性,而不是格式化字符串:

decimal _sellPrice;
public decimal SellPrice
{
    get
    {
        return _sellPrice;
    }
    set
    {
        _sellPrice = value;
    }
}

public string SellPriceString
{
    get
    {
        return _sellPrice.ToString("N2");
    }
}
public decimal Quantity { get; set; }
public string QuantityDisplay
{
    get
    {
        return String.Format("{0:0.000}", Quantity);
    }
}
[Column("sell_price")]
[XmlElement(ElementName = "sell_price", Namespace = "http://tempuri.org/DataSet1.xsd")]
//[DisplayFormat(DataFormatString = "{0:0.00}")]
public decimal SellPrice { get; set; }
public string SellPriceDisplay
{
    get
    {
        return String.Format("{0:0.00}", SellPrice);
    }
}
ToString
方法中使用as参数。您可以对
Quantity
属性执行完全相同的操作,但使用标准数字格式“N3”,再次参考链接以了解有关格式的更多信息

public decimal Quantity { get; set; }
public string QuantityDisplay
{
    get
    {
        return String.Format("{0:0.000}", Quantity);
    }
}
[Column("sell_price")]
[XmlElement(ElementName = "sell_price", Namespace = "http://tempuri.org/DataSet1.xsd")]
//[DisplayFormat(DataFormatString = "{0:0.00}")]
public decimal SellPrice { get; set; }
public string SellPriceDisplay
{
    get
    {
        return String.Format("{0:0.00}", SellPrice);
    }
}
无论我想在哪里进行计算,我都会使用
数量
售价
属性。无论我想在哪里显示
Quantity
SellPrice
我都使用
QuantityDisplay
SellPriceDisplay
属性


无论我想在哪里进行计算,我都会使用
数量
售价
属性。无论我想在哪里显示
Quantity
SellPrice
我都使用
QuantityDisplay
SellPriceDisplay
属性。

但我想在一个地方设置它(例如在模型中)然后,无论我在哪里使用它,都会在小数点分隔符后显示2个数字,即使数字是7,6。例如,并非每次我都必须使用SellPrice来放置一些格式化代码。然后创建一个模型属性“string SellPriceDisplay”,并在“get”部分包含上述代码。但我想将其设置在一个位置(以模型为例)然后,无论我在哪里使用它,都会在小数点分隔符后显示2个数字,即使数字是7,6。例如,并非每次我都必须使用SellPrice来放置一些格式化代码。然后创建一个模型属性“string SellPriceDisplay”,并将上述代码包含在“get”部分。使用
[显示格式]
attribute as in MVC?@Profile3ForStack您已经可以导入名称空间了吗?如果没有,您可能想看看这个主题,更具体地说,这个答案:。我在开发Xamarin.Android应用程序时不使用MVC,我使用MVVMCross。@Profile3ForStack如果这解决了您的问题,请接受我的答案。如果没有,可以吗你能给我们一个更新吗?“C2”也让货币显示出来。我不想这样。我把我的解决方案传给贝娄,它包含了那篇文章中的部分建议和我的部分方法。我认为它是回答这个问题的最佳方法。我给你+1是因为你的解决方案的一部分让我找到了我的解决方案。@Profile3ForStack你可以使用“N2”然后..这就是我引用此文档的原因:,我看不出您不接受我的答案的任何原因。我编辑了我的答案以反映我的意思。是否可以使用
[DisplayFormat]进行编辑
attribute as in MVC?@Profile3ForStack您已经可以导入名称空间了吗?如果没有,您可能想看看这个主题,更具体地说,这个答案:。我在开发Xamarin.Android应用程序时不使用MVC,我使用MVVMCross。@Profile3ForStack如果这解决了您的问题,请接受我的答案。如果没有,可以吗你能给我们一个更新吗?“C2”也让货币显示出来。我不想这样。我把我的解决方案传给贝娄,它包含了那篇文章中的部分建议和我的部分方法。我认为它是回答这个问题的最佳方法。我给你+1是因为你的解决方案的一部分让我找到了我的解决方案。@Profile3ForStack你可以使用“N2”然后..这就是为什么我引用了这个文档:,我不明白你为什么不接受我的答案。我编辑了我的答案以反映我的意思。