2017-04-03 35 views
0

我對正在處理的應用程序有一個DAL,並且該類返回具有十進制數據類型的對象。我在應用程序的前端顯示某些值時遇到問題,因爲它們是貨幣值。我見過一些類似的問題,其中包括this one,這與我的問題非常相似,但沒有任何匹配數據類型保留十進制的場景。在十進制數據類型上強制保留兩位小數

首先問題是值是四捨五入的,我通過編輯SP在SQL中解決了這個問題。現在值正確地通過了,但是當值爲「18.2」時我看不到強制保留第二位小數的選項,例如它應該顯示「18.20」

更大的問題是DAL正在存儲列表中的這些值然後綁定到DevExpress ASP網格。我已經使用DX格式化了這個值,並且它沒有影響:

<dx:GridViewDataTextColumn FieldName="TotalAmountDue" VisibleIndex="5" Width="10%"> 
    <PropertiesTextEdit DisplayFormatString="#,###.##" /> 
</dx:GridViewDataTextColumn> 

這裏的最佳方法是什麼?

+0

如何在數據類型不是字符串時工作?該列表包含小數值,列表直接綁定到網格。 – Daniel

+0

嘗試'#,0.00'強制至少1位數字和2位小數位0.10或1.01或99.99或確實18.20 –

+0

像魅力一樣工作@DaveBecker是否存在使用此掩碼方法而不是「#,###。## 「 – Daniel

回答

1

如果你有可變長度的數字,但要千個分隔符,並要強制前至少一個數字十進制分隔符和2後,使用:

#,0.00

實例

.1變得0.10

18.2變得18.20

99變得99.00

1234.1 beomes 1,234.10

編輯:忘記提到有關舍入

這將四捨五入到最接近的小數位,因此0.99991將顯示爲1.00

+0

我假設「####,## 0.00」也可以工作 – Daniel

+0

正確的名稱是小數點分隔符和千位分隔符,因爲它們取決於文化設置; o) –

+0

感謝您編輯Dave,我假定您想要的更多 – Daniel

1

你爲什麼不試試String.Format

它的工作原理是這樣的:

decimal yourPrice=GetPriceFromDb(); //50.2 for example 

txtYourPrice.Text = string.Format("{0:0.00}", Math.Round(yourPrice, 2)); 

結果將顯示在txtYourPrice.Text將是50.20

+0

感謝Roxy的回答,該技術的問題在於我沒有使用單個值,我將一個列表作爲數據源綁定到Dev Express Grid控件,因此@Dave的答案更有效 – Daniel