2015-12-22 30 views
-2

如何用小數點後3個零轉換可以將空的小數轉換爲小數。可空小數轉成小數後加3個零後

eg:cubed - > decimal? (數據類型) - sql服務器爲此屬性提供值5324。在我的視圖模型我有

decimal cdb 
我databuilder類

我正在轉換這

cbd=cubed??0. 

從而CBD = 5324 ,但我想

cbd=5324.000 

我怎麼能得到這個?

+3

'ToString(「0.000」)'? –

+0

@SamiKuhmonen - 我認爲這個問題更多地涉及到'decimal'的內部工作,而不僅僅是能夠調用'.ToString(...)'。 – Enigmativity

+0

@Enigmativity由於它在表示層上並不重要,在表示層上有多少十進制零,所以不清楚。 –

回答

1

如果我寫這樣的代碼:

decimal? cubed = 5324m; 
decimal cdb = cubed ?? 0.000m; 
Console.WriteLine(cdb); 

我得到5324寫入控制檯。

,如果我把它改成這樣:

decimal? cubed = null; 
decimal cdb = cubed ?? 0.000m; 
Console.WriteLine(cdb); 

我得到0.000。小數點「記住」小數點後有多少個零。

我跑這兩條線:

Console.WriteLine(String.Join(":", decimal.GetBits(5324m).Select(x => x.ToString()))); 
Console.WriteLine(String.Join(":", decimal.GetBits(5324.000m).Select(x => x.ToString()))); 

我得到這些了:

5324:0:0:0 
5324000:0:0:196608 

因此,要獲得具有三個零小數位,你可以做到這一點的內部表示返回的值:

decimal? cubed = 5324m; 
decimal cdb = cubed ?? 0m; 
int[] bits = decimal.GetBits(cdb); 
cdb = new decimal(new [] { bits[0] * 1000, 0, 0, 196608}); 
Console.WriteLine(cdb); 

這給了我:

5324.000 

此代碼適用於從0m4294967m的值。如果你需要它爲這個範圍以外的值工作,那麼需要做更多的工作來完成bits值。