Новости:

Подпишитесь на рассылку новых сообщений форума через службу рассылок: Subscribe.ru

Главное меню

Проблема с точностью вычисления

Автор verdim, 18.06.2012, 19:45

« назад - далее »

verdim

Добрый день !!!
Вот я и опять у Вас в гостях. Принес подарок. А именно.
Есть функция, простенькая такая:

Function СумЦвет (диапазон As Range, критерий As Range) As Single
Application.Volatile True
Dim  i As Range
   For Each  i  In диапазон
        If i.Interior.ColorIndex = критерий.Interior.ColorIndex Then
              СумЦвет = СумЦвет + i.Value
        End If
   Next
EndFunction

Что она делает, - не мне Вам рассказывать.
Расскажу только о том, чем она меня убила .... наповал.
Задумал я сложить цифры с двумя знаками после точки ...
Задумано, - сделано: выставил их столбиком, завел функцию, выделил столбик, установил критерий ...
И получил ... довольно неприятно и не туда, куда хотел.
Сложиться то они сложились, но, сколько бы я ни стучал головой об стенку, цифры после точки напрочь не хотели реагировать.
Я, желая их умаслить, умножал два слагаемых на сто, а потом делил сумму на эти злосчастные сто, - ни в какую.
Увеличиваю цифирю на одну сотую, проделываю эту манипуляцию, а результат увеличивается на шесть сотых (хотя, спасибо ему, конечно, за то, что он вообще изменился).
Может кто сталкивался с подобным ??? Не подскажете ???
Спасибо.

MCH

1. вместо Single используйте Double
2. если хотите округлять до двух знаков, то округляйте: СумЦвет = СумЦвет + Round(i.Value, 2)

verdim

Огромное спасибо.
Тема закрыта.