powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Еще раз про округление
9 сообщений из 9, страница 1 из 1
Еще раз про округление
    #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
Еще раз про округление
    #35129019
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж. Действительно ведет себя очень смешно. Хотя можно догадаться почему.
Самый простой способ избавиться от этого добавить к результату 0.0005.
...
Рейтинг: 0 / 0
Еще раз про округление
    #35129151
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня format отрабатывает нормально:
format((196.70 / 100 * 15),"0.00") = 29.51
...
Рейтинг: 0 / 0
Еще раз про округление
    #35129206
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я валяюсь
авторХотя функция Round полезна для возвращения номера с указанном числом десятичных знаков, Вы не можете предсказать, как будет выполненно округление, когда округляемая цифра равна 5. Как VB округляет число зависит от внутреннего двоичного представления переданного аргумента.

Взято отсюда


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

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

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


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