【发布时间】:2011-10-14 12:03:13
【问题描述】:
我正在使用现有的 SQL Server 数据库,表列定义为decimal(4,2)。但是,我被要求防止代码舍入小数位。
所以我尝试将列类型更改为decimal,它会自动转换为decimal(18, 0),这会立即清除我现有值的任何小数部分。 (很好。默认的十进制类型是整数。有什么意义?)
所以我尝试将列类型更改为decimal(8,5)。由于小数点后 5 位超出了需要,因此消除了舍入问题。
但是,每当我在 C# ASP.NET 应用程序中打印此值时,它总是被格式化为小数点后 5 位(例如12.34000)。我不明白这一点。当我从数据库中读取值时,我将它分配给一个常规的decimal 值。那么decimal 值如何“知道”小数点后应该有 5 位呢?
更重要的是,如何在没有尾随零的情况下显示此值?我猜有一种方法可以格式化值。但是,由于它在许多地方都使用过,所以如果它不自动附加尾随零会更好。如果需要,我可以更改数据库中的数据类型。
【问题讨论】:
标签: c# sql-server decimal