2010-05-25 44 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以获得第一部分和减去从数然后乘以十要第二部分