[英]Is it possible to keep original trailing zeroes from C# decimal type when saving in SQL Server?
[英]String contains trailing zeroes when converted from decimal
在我寫的一個程序中,我遇到了一個不尋常的怪癖,我試圖找出是否有人知道原因。 請注意, 解決問題很容易。 我只是無法弄清楚為什么它首先發生。
我有一個用VB.NET編寫的WinForms程序,它顯示了一個數據子集。 它包含一些顯示數值的標簽(標簽的.Text
屬性直接從Decimal值分配)。 這些數字是由我在C#中編寫的DLL返回的。 DLL調用Web服務,該服務最初返回有問題的值。 它返回一個字符串,另一個返回十進制(我沒有對webservice的任何控制,我只是消耗它)。 DLL將這些屬性分配給對象上的屬性(兩者都是小數),然后將該對象返回到調用DLL的WinForm程序。 顯然,Web服務中消耗了大量其他數據,但沒有其他操作可以修改這些屬性。
所以,簡短的版本是:
Foo
。 Foo
。 DLL調用webservice,它返回SomeOtherFoo
。
//Both Foo.Bar1 and Foo.Bar2 are decimals Foo.Bar1 = decimal.Parse(SomeOtherFoo.Bar1); //SomeOtherFoo.Bar1 is a string equal to "2.9000" Foo.Bar2 = SomeOtherFoo.Bar2; //SomeOtherFoo.Bar2 is a decimal equal to 2.9D
DLL將Foo返回給WinForm。
WinForm.lblMockLabelName1.Text = Foo.Bar1 //Inspecting Foo.Bar1 indicates my value is 2.9D WinForm.lblMockLabelName2.Text = Foo.Bar2 //Inspecting Foo.Bar2 also indicates I'm 2.9D
那么,怪癖是什么?
WinForm.lblMockLabelName1.Text顯示為“2.9000” ,而WinForm.lblMockLabelname2.Text顯示為“2.9” 。
現在,我所知道的關於C#和VB的所有內容都表明,最初解析為小數的字符串格式與后來的decimal.ToString()操作的結果無關。 我希望decimal.Parse(someDecimalString).ToString()
將返回沒有任何尾隨零的字符串。 我在網上找到的所有東西似乎證實了這一點(有無數Stack Overflow問題正好相反......如何保持格式化與初始解析)。
目前,我剛剛從解析的初始字符串中刪除了尾隨的零,這隱藏了怪癖。 但是,我很想知道為什么它首先發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.