我有这个方法,如何将小数点设为.00而不是.0000?
public static List<Product> GetAllProducts()
{
List<Product> products = new List<Product>();
string sqlQuery = "SELECT * FROM Products";
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand(sqlQuery, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
while (reader.Read())
{
Product product = new Product();
product.Id = Convert.ToInt32(reader["Id"]);
product.ManufacturerId = Convert.ToInt32(reader["ManufacturerId"]);
product.CategoryId = Convert.ToInt32(reader["CategoryId"]);
product.Name = (reader["Name"]).ToString();
product.Description = (reader["Description"]).ToString();
product.Price = Convert.ToDecimal(reader["Price"]);
product.ItemsInStock = Convert.ToInt32(reader["ItemsInStock"]);
products.Add(product);
}
}
}
}
return products;
}
更新: 很抱歉提出愚蠢的问题。 我看不到放置DataFormatString =“{0:F2}”
的位置这是我的网格:
<asp:TemplateField HeaderText="Price" SortExpression="Price">
<EditItemTemplate>
<asp:TextBox ID="PriceTextBox" runat="server" Text='<%# Bind("Price") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="PriceLabel" runat="server" Text='<%# Bind("Price") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
答案 0 :(得分:5)
1234m.ToString( “0.00”)
答案 1 :(得分:4)
您尚未显示显示这些内容的位置。我们所拥有的只是数据库单元和内存中的对象,这两者都只是存储。出于存储目的,.00
和.0000
相同。尝试从一个转换为另一个是浪费资源。向我们展示您向用户显示此内容的位置,我们将根据您的需要帮助您格式化。
另外,作为个人喜好,我会写下这样的代码:
private static ToProduct(this IDataRecord record)
{
var product = new Product();
product.Id = record.GetInt32(record.GetOrdinal("Id"));
product.ManufacturerId = record.GetInt32(record.GetOrdinal("ManufacturerId"));
product.CategoryId = record.GetInt32(record.GetOrdinal("CategoryId"));
product.Name = record.GetString(record.GetOrdinal("Name"));
product.Description = record.GetString(record.GetOrdinal("Description"));
product.Price = record.GetDecimal(record.GetOrdinal("Price"));
product.ItemsInStokc = record.GetInt32(record.GetOrdinal("ItemsInStock"));
return product;
}
public static IEnumerable<Product> GetAllProducts()
{
string sqlQuery = "SELECT * FROM Products";
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(sqlQuery, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
while (reader.Read())
{
yield return reader.ToProduct();
}
}
}
}
<强>更新强>
您评论说这将在GridView中。好的。在这种情况下,您需要做的只是在列定义中有DataFormatString
,如下所示:
<asp:GridView runat="server" id="TestView" ... >
<Columns>
<asp:BoundField DataFormatString="{0:F2}" />
...
</Columns>
</asp:GridView>
答案 2 :(得分:1)
打印Product.Price时,请使用.ToString(“N2”)。您可能需要的是完整货币表达式,即.ToString(“C”)。以下是所有格式字符串的参考链接:
答案 3 :(得分:0)
很明显你不能做下面的事情
product.Price = Convert.ToDecimal(reader["Price"]).ToString("0.00");
因为它会返回一个字符串。虽然你可能会这样做:
product.Price = Convert.ToDecimal(reader["Price"].ToString("0.00"));
这似乎是完成此操作的最合理方式。
答案 4 :(得分:0)