Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Еще раз про округление / 9 сообщений из 9, страница 1 из 1
13.02.2008, 00:34
    #35128537
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про округление
Читал я предыдущие статьи. Все пишут о сложном. Объясните плз на простом примере.

Таблица. В таблице поле тип money. В это поле помещается результат деления других полей.
Например, 196,70 / 100 * 15 = 29,505 (в ячейке при просмотре в режиме таблицы 29,51 при нажатии на ячейку открывается 29,505)
Как сделать так что бы поле фактически содержало 29,51 , а не показывало округление?

Не подходит:
1. round((196,70 / 100 * 15),2) = 29.50
2. format((196,70 / 100 * 15),"0.00") = 29.50 ("standart", "fix") - тоже самое
3. RoundForBank((196,70 / 100 * 15),2,false) = 29.505 это приведенная пользователем Allll_ функция.

Так как же добиться математического фактического округления как в Excel 2003 ОКРУГЛ()???
...
Рейтинг: 0 / 0
13.02.2008, 10:27
    #35129019
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про округление
Да уж. Действительно ведет себя очень смешно. Хотя можно догадаться почему.
Самый простой способ избавиться от этого добавить к результату 0.0005.
...
Рейтинг: 0 / 0
13.02.2008, 10:52
    #35129151
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про округление
У меня format отрабатывает нормально:
format((196.70 / 100 * 15),"0.00") = 29.51
...
Рейтинг: 0 / 0
13.02.2008, 11:04
    #35129206
gjghjc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про округление
Я валяюсь
авторХотя функция Round полезна для возвращения номера с указанном числом десятичных знаков, Вы не можете предсказать, как будет выполненно округление, когда округляемая цифра равна 5. Как VB округляет число зависит от внутреннего двоичного представления переданного аргумента.

Взято отсюда


С уважением, Николай.
...
Рейтинг: 0 / 0
13.02.2008, 11:06
    #35129218
gjghjc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про округление
Letter_DУ меня format отрабатывает нормально:
format((196.70 / 100 * 15),"0.00") = 29.51
Подтверждаю, только что проверил у себя
...
Рейтинг: 0 / 0
13.02.2008, 11:13
    #35129244
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про округление
авторХотя функция Round полезна для возвращения номера с указанном числом десятичных знаков, Вы не можете предсказать, как будет выполненно округление, когда округляемая цифра равна 5
Округляет в сторону ближайшего четного, специальный математический прием в статистике...
...
Рейтинг: 0 / 0
13.02.2008, 13:36
    #35129833
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про округление
Странно, то работает, то нет.
Может зависит от типа поля в таблице, т.к. данные для вычислений берутся из базы.

А вариант в чистом виде:
format((196.70 / 100 * 15),"0.00") = 29.51 - работает!!!

Буду тестировать.
...
Рейтинг: 0 / 0
14.02.2008, 12:53
    #35132447
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про округление
Тут тоже было Round от VBA глючит похоже.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
09.04.2010, 11:07
    #36570124
Vitos4545
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про округление
Может попробовать сначала переменной присвоить (196.70 / 100 * 15) получится:
a = (196.70 / 100 * 15)
format (a,"0.00")
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Еще раз про округление / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]