2015-10-05 71 views
0

我想將一個字符串值強制轉換爲ObjectParameter的十進制,並且小數必須是存儲過程的精度中的兩個位置。Decimal.Parse刪除結尾零

它基本上是這樣的:

string scScore = "1.50"; 

decimal scScore2 = Decimal.Parse(scScore); 

我希望scScore2等於1.50,但它總是爲1.5結束了,無論我如何努力將其強制轉換。

這段代碼正是我想要的,當我在C#小提琴或VS中在新的控制檯應用程序中運行它時。我嘗試了幾乎所有在本網站上發現的方法和其他方法來保持我的結尾爲零,但它似乎總是迷失方向。

我也嘗試在解析後添加尾隨零,但是這也永遠不會起作用。

還有什麼可能會導致這?

編輯:

我在調試器中查看值被誤導了。

產量的確如人們所預料的那樣。

+1

@大衛這是一個鮮爲人知的事實,但小數也有一個精度。看[這個例子](http://ideone.com/2KYNqo)。 –

+2

@LucasTrzesniewski:有趣。很高興知道。 (看起來對於精確性很重要的科學計算很有用,無論價值如何。)在學習之後,我在這裏找到了一些Google搜索:http://stackoverflow.com/questions/5324988/how-do-i-make-decimal-tryparse- keep-the-trailing-zeros不僅這使得這是一個重複的問題,但答案似乎很簡單。 OP可能正在查看調試器中的值,而不是實際的輸出。測試確認結果值*上的'.ToString()'輸出'「1.50」'。 – David

+0

@大衛是的,我找到[this](http://stackoverflow.com/q/8705861/3764814)尋找一個愚蠢的,但你更適合這個問題。 –

回答

2

小數點沒有尾隨零。

如果您需要,僅用於顯示。應用字符串的格式,如「0.00」。

+3

你錯了。 [他們這樣做](http://ideone.com/2KYNqo):) –

+0

嗯,那只是爲了好玩。嘗試'22m.Equals(22.00m)'。 – Gustav

+0

我沒有說價值不相等;-) –