asp.net странный результат расчета - PullRequest
1 голос
/ 15 декабря 2009

У меня странная проблема в 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

Все работает нормально, кроме TimeID 24897. Каким-то образом расчет 15,5 - 7,5 = 8,00000000000001

Я озадачен тем, почему это случилось. Кто-нибудь сталкивался с подобной проблемой?

Ответы [ 2 ]

1 голос
/ 15 декабря 2009

Обычная двойная проблема внутренней памяти. На этом сайте много, много раз отвечали (я сам отвечал на него не раз, и мистер Скит, вероятно, потерял счет). Пример:

Сравнение двойных значений в C #

1 голос
/ 15 декабря 2009

Похоже, вы используете неправильный тип данных для хранения своих значений ... вы должны использовать decimal для точных математических результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...