任何人都可以解釋爲什麼我得到以下結果?System.Decimal輪任務
Dim badDecimal As Decimal = 54.50327999999999
Dim expectedDecimal As Decimal = CDec("54.50327999999999")
badDecimal = 54.50328D,while expectedDecimal = 54.50327999999999D。我的理解是badDecimal應該包含expectedDecimal的值(expectedDecimal可以保持正確的值這一事實表明Decimal類型具有保存該值的精度)。
在此先感謝您提供的任何幫助。
我不知道所有的東西VB.NET,但在C#中,你需要後綴數量與M字符號來表示,這是一個小數,否則它是一個雙精度。所以,你是否需要在VB中做同樣的事情,所以實際上,第一行是將一個double值(54.50327999999999的雙重解釋)賦給一個小數,因此在編譯時已經失去了精度? – 2010-04-09 10:29:00
你美麗的男人,這確實是問題!我有種假設,因爲我宣稱var是Decimal類型的,編譯器會推斷這一點。小心重新發布答案,以便我可以將其標記爲soloution? – WiseGuyEh 2010-04-09 10:32:27
轉發評論爲答案在這裏:http://stackoverflow.com/questions/2606610/system-decimal-rounds-on-assignment/2606685#2606685 – 2010-04-09 10:37:46