我正在使用现有的SQL Server数据库,并将表列定义为decimal(4,2)
。但是,我被要求防止代码舍入小数位。从SQL Server数据库格式化十进制值
因此,我尝试将列类型更改为decimal
,该列自动转换为decimal(18, 0)
,该列表立即清除了我现有值的任何小数部分。 (不错,默认的十进制类型是一个整数,有什么意义呢?)
所以我试着将列类型改为decimal(8,5)
。由于小数点后的5位数字多于需要,因此消除了舍入问题。
但是,每当我在C#ASP.NET应用程序中打印此值时,它始终格式化为小数点后5位数(例如12.34000
)。我不明白这一点。当我从数据库中读取值时,我将其分配给常规值decimal
。那么decimal
值如何知道小数点后面应该有5位数?
更重要的是,我怎样才能显示这个值没有尾随零?我猜测有一种方法来格式化值。但是,由于它在很多地方使用,如果它不会自动附加尾随零,它会更好。如果需要,我可以更改数据库中的数据类型。
那么为什么你的第一个例子不会返回'00000001.00000'。这不会产生同样的感觉吗?我只是在这里使用了错误的数据类型? –
@Jonathan Wood - 有效数字的约定在小数点后面,而不是在前面。 –
好吧,那么不会返回'001.00000'与现在一样有意义吗? –