我正在使用現有的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'與現在一樣有意義嗎? –