2010-05-25 77 views
1

我試圖用double來表示在數據庫中的雙值類型的位,有時必須接受兩個值,有時只接受一個(int)。分裂兩個雙,C#

等等領域是數據庫中的浮動,在我的C#代碼,它是一個雙(因爲通過EF映射它使雙出於某種原因...)

所以基本上我想要什麼要做..讓我們說2.5是價值。我想把它分成2和5.有沒有什麼隱含的方法可以解決這個問題?

+0

爲什麼要嘗試那個,而不是僅僅使用兩列? – Svish 2010-05-25 19:08:25

+0

這有點難以解釋...但基本上所給出的數據可能會或可能不會分佈在兩列之間,並且在數據庫級別無法確定它。每次使用數據時都是動態的。 – Ciel 2010-05-28 20:10:25

回答

4

像這樣:

int intPart = (int)value; 
double fractionalPart = value - intPart; 

如果你想fractionalPart是一個int,您可以10 ñ,其中n是你想要的數字投給int的數量,乘以。
但是,要小心精度損失。

然而,這是非常糟糕的設計;你應該可以做兩個領域。

SQL Server的float類型是一個8字節的浮點值,相當於C#的double

+0

@Simon:這不是個好主意。多少位有效數字? 2.5','2.05','2.50'怎麼樣?如果你總是想要一個數字,乘以10並且轉換爲int。但是,要小心精確度。 – SLaks 2010-05-25 17:56:41

+0

在「。」處轉換爲字符串和分割會怎樣?這當然意味着他將它保存爲字符串 – Simon 2010-05-25 17:57:20

1

你應該能夠隱式類型轉換雙爲int以獲得第一部分和減去從數然後乘以十要第二部分