asp.net奇怪的计算结果

asp.net奇怪的计算结果,asp.net,math,Asp.net,Math,我在asp.NET中遇到了一个奇怪的问题,在计算我们需要开多少小时的发票时 在下面的示例中,我们总共有75,9小时需要开具发票。 这些时间分布在几个数据库行(timeid)上 基本上,我总是从“到发票”小时计数中扣除“发票金额”: TimeID:25433 - to invoice=75,9 - amount_invoiced=1 TimeID:25774 - to invoice=74,9 - amount_invoiced=1 TimeID:24688 - to invoice=73,9 -

我在asp.NET中遇到了一个奇怪的问题,在计算我们需要开多少小时的发票时

在下面的示例中,我们总共有75,9小时需要开具发票。 这些时间分布在几个数据库行(timeid)上

基本上,我总是从“到发票”小时计数中扣除“发票金额”:

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
除了TimeID24897,一切正常。 不知怎的,15,5-7,5的计算=8000000000001


我不明白为什么会这样。有人遇到过类似的问题吗?

听起来您使用了错误的数据类型来存储值……您应该使用
十进制
来获得准确的数学结果

常见的双重内部存储问题。在这个网站上被回答了很多次(我自己也回答过不止一次,斯基特先生可能已经数不清了)。例如: