2009-12-15 68 views
1

在计算我们需要开发多少个小时时,我在asp.NET中出现了一个奇怪的问题。asp.net奇怪的计算结果

在下面的例子中,我们总共需要开票75,9小时。 这些小时分布在多个数据库行(TimeID)上。

基本上,我总是扣除“amount_invoiced”,从“发票”小时数:

TimeID:25433 - to invoice=75,9 - amount_invoiced=1 
TimeID:25774 - to invoice=74,9 - amount_invoiced=1 
TimeID:24688 - to invoice=73,9 - amount_invoiced=1,5 
TimeID:24646 - to invoice=72,4 - amount_invoiced=2 
TimeID:24890 - to invoice=70,4 - amount_invoiced=2 
TimeID:25773 - to invoice=68,4 - amount_invoiced=2,25 
TimeID:24455 - to invoice=66,15 - amount_invoiced=2,5 
TimeID:25431 - to invoice=63,65 - amount_invoiced=2,5 
TimeID:24552 - to invoice=61,15 - amount_invoiced=3 
TimeID:24644 - to invoice=58,15 - amount_invoiced=3 
TimeID:24727 - to invoice=55,15 - amount_invoiced=3 
TimeID:25000 - to invoice=52,15 - amount_invoiced=4 
TimeID:25195 - to invoice=48,15 - amount_invoiced=4,15 
TimeID:24510 - to invoice=44 - amount_invoiced=4,5 
TimeID:24419 - to invoice=39,5 - amount_invoiced=5 
TimeID:25126 - to invoice=34,5 - amount_invoiced=5,5 
TimeID:25064 - to invoice=29 - amount_invoiced=6,5 
TimeID:24420 - to invoice=22,5 - amount_invoiced=7 
TimeID:25251 - to invoice=15,5 - amount_invoiced=7,5 
TimeID:24897 - to invoice=8,00000000000001 - amount_invoiced=8 

一切工作正常,除了TIMEID 24897. 不知怎么的15.5计算 - 7,5 = 8,00000000000001

我很困惑,为什么会发生这种情况。有没有人遇到类似的问题?

回答

1

通常的双重内部存储问题。在这个网站上被回答了很多很多次(我已经不止一次地回答了这个问题,而Skeet先生可能已经失去了计数)。例如:

Comparing double values in C#

+0

感谢您的信息,问题现在解决了。 – 2009-12-15 14:26:33

1

听起来就像你使用错误的数据类型来存储你的值......你应该使用decimal为准确的数学结果。