2011-04-22 161 views
4

我正在做一些数学计算。这里是我的代码:从十进制转换为浮点数

decimal FirstYr = decimal.Round((first/second), 5); 

如果我传递first = 20second = 34,我得到的0.58824值在FirstYr。这很好。现在我在我的LINQ在这里做这样的计算:

ev.HiComm = (float)(FirstYr * 100); 

HiComm是漂浮在DB,这上面的计算是通过值:58.824001312255859

哪个我不希望它。我想在我的ev.HiComm = 58.824

我在做什么错在这里?

+0

这可能会让你感兴趣:http://stackoverflow.com/questions/122523/why-is-a-sql-float-different-from-ac-float – womp 2011-04-22 17:02:02

+1

任何原因,你不只是多个第一行代码由100 – TheLukeMcCarthy 2011-04-22 17:06:02

+0

我可以做到这一点,但无论哪种方式,我需要将其转换为浮动! – 2011-04-22 17:08:14

回答

0

它的工作像这样在后面的代码:

decimal FirstYr = decimal.Round((first/second), 5)*100; 
ev.HiComm = (double)FirstYr ; 

感谢您的建议!

+1

您所做的只是将一个小数转换为double,这引发了您在数据库中使用float(decmial)值的原因。 – 2011-04-22 17:51:36

3

如果你想正好在点后3个位置,你必须改变你的sql字段为decimal(x,3),其中x是3加上你在小数点之前需要的最大位置。 float不能存储你想要的确切值。

+0

我没有控制数据库。我可以在C#代码中做些什么吗? – 2011-04-22 16:55:24

+0

将从db读取的值处理回您想要的格式?如果你的价值需要精确,那么'浮动'就不够了。 – lincolnk 2011-04-22 16:58:13

+0

@Mayank Raj:只要您从数据库中获取数据,您可以做的唯一事情就是将数值四舍五入为小数点后三位。 – 2011-04-22 16:59:47