2011-06-23 86 views
12

在.NET,當我添加兩個SqlDecimals,像這樣:添加兩個.NET SqlDecimals提高精度?

SqlDecimal s1 = new SqlDecimal(1); 
SqlDecimal s2 = new SqlDecimal(1); 
SqlDecimal s3 = s1 + s2; 

然後S3具有精度2,而s1和s2都具有精度1.

這似乎奇數,特別是隨着文檔狀態加法運算符的返回值是「一個新的SqlDecimal結構,其Value屬性包含總和」。即根據文件,添加不應該改變精度。

我在這裏錯過了什麼嗎?這是預期的行爲?

乾杯,

蒂爾曼

+0

通常在添加兩個浮點值的情況下,結果是雙重考慮溢出。所以,看起來奇怪的是,它並不奇怪,在正確的背景下,它具有很大的意義。 –

+0

謝謝了,在重讀'精度'的定義之後,它實際上有了更多的意義......然後,不應該將加法運算考慮到實際值,而只是在必要時調整精度? – user812775

回答

4

This article(http://msdn.microsoft.com/en-us/library/ms190476.aspx)解釋了SQL類型的行爲,我承擔。 NET Sql數據類型反映了他們的行爲。

+0

謝謝,這實際上是有道理的:) – user812775

3

我發現這種行爲正常。

Precision被定義爲的用於表示Value屬性的最大位數。

兩個SqlDecimal號碼的總和Precision等於1是包含在[-10,10]中的數字。在這種情況下,要求的最大值Precision2