当我在asp.net的文本框中使用(c#)添加价格1.500并将其保存时,如何保持零。价格的数据类型为十进制(20,3)?

当我在asp.net的文本框中使用(c#)添加价格1.500并将其保存时,如何保持零。价格的数据类型为十进制(20,3)?,c#,asp.net,C#,Asp.net,当我在文本框中添加价格1.500并保存它时,它会变成1.5或2.350,它会变成2.35。价格的数据类型是十进制的(20,3)。我如何用零保存价格???如果你得到的值是浮点数或双精度,那么当你向用户显示它时,你可以决定如何将值表示为字符串。例如: static void Main(string[] args) { float value = 1.5f; string text = string.Format("{0:0.000}", value); // text =

当我在文本框中添加价格1.500并保存它时,它会变成1.5或2.350,它会变成2.35。价格的数据类型是十进制的(20,3)。我如何用零保存价格???

如果你得到的值是浮点数或双精度,那么当你向用户显示它时,你可以决定如何将值表示为字符串。例如:

static void Main(string[] args)
{
    float value = 1.5f;

    string text = string.Format("{0:0.000}", value);
    // text = "1.500"

}
其他数字格式字符串可在此处找到:

只需将格式添加到标准的
ToString()
;在您的情况下,小数点后需要3位数字,因此相应的格式为
F3

  Double value = 2.350; 
  String result = value.ToString("F3");

结合这两个响应,您还可以编写扩展方法来达到这个目的

 public enum FormatType
        {
            Default,
            TwoDecimal,
            ThreeDecimal,
            FourDecimal

        }
        public static string ToSpecificFormat(this decimal amount, FormatType formatType = FormatType.Default)
        {
            string fType=string.Empty;
            switch (formatType)
            {
                case FormatType.Default :
                    fType = "F2";
                    break;
                case FormatType.TwoDecimal :
                    fType = "F2";
                    break;
                case FormatType.ThreeDecimal:
                    fType = "F3";
                    break;
                case FormatType.FourDecimal:
                    fType = "F4";
                    break;

            }
           return amount.ToString(fType, CultureInfo.InvariantCulture);


        }

您可以将此扩展方法修改到您想要的程度,以便特定于区域性的执行将格式样式编号为货币、百分比等。

0没有意义这就是为什么不保存它,为什么要保存0?不管您看到什么。如果它是十进制(20,3),那么它将被存储为十进制。您是否尝试过存储类似于1.234的内容?在数据库中,它将存储为2.35,不管最后有多少个零(2.350000000….=2.35)。但是,当您想要显示这些值时,必须按照自己的方式对其进行格式化。比如
textBox.Text=(2.35).ToString(“f3”)@Adil我需要它将数字转换为单词,例如1.500,它是正确的,500,但当它为1.5时,它返回error@feby,保存的数字不带尾随零,但在显示数字时添加它们,例如使用字符串格式,如您在ama1111的答案中所看到的
decimal value = Math.Round(value, 1, MidpointRounding.AwayFromZero);