2014-02-24 92 views
0

我的值在數據庫中存儲爲0.05和0.10。我創建使用C#代碼中使用,以獲得在該列表中的這些值的列表:數據類型雙截斷精度

foreach (var objST in obj.LstTerms) 
{ 
    SubcriptionTermsModel objSubcriptionTerms = new SubcriptionTermsModel(); 
    objSubcriptionTerms.DiscountRate = objST.DiscountRate; 
} 

其中DiscountRate是double類型。 但是,當創建一個列表的值0.10被截斷爲0.1我無法比較我的觀點。 請幫我解決這個問題。

+0

'0.10'和'0.1'在數值上相等的;沒有辦法區分這兩者。創建字符串表示時可能會出現您的問題。你需要指定你需要兩位十進制數字;例如,使用'num.ToString(「F2」)'。 – Douglas

+1

0.10 == 0.1,至少在過去的幾百年裏是這樣的。你可能在你的視圖上比較字符串,放一些更相關的代碼,包括你的表模式。 – Anri

+1

實際上'0.1'不能用'double'表示。最接近'0.1'的是'0.10000 00000 00000 00555 11151 23125 78270 21181 58340 45410 15625'。我認爲你將需要重新校準你對二進制浮點可以爲你做什麼的期望。 –

回答

0

隨着討論here

雙不守微不足道的數字 - 有1.5和1.50000之間沒有區別,只要雙而言。

如果你想保留不重要的數字,用十進制代替。無論如何,它可能更適合您,具體取決於您的確切環境。 (我們有很少的情況下永遠在這裏...)

所以,你可以使用這個decimal代替double

相關問題