![]() |
|
Модераторы: Akina |
![]()
|
|
| Guest |
|
|||
|
Unregistered |
Dim X As Single X = Val(487.50 * 15 * 0.07) / 100 Y = Round(X, 2) Значение X будет равно 5.11875 а Y=5.11 то есть после точки остается 2 знака (так нужно) но число не округляется как сделать чтобы значение Y округлялось, то есть в данном случае равнялось не 5.11 а 5.12 (по законам математики) |
|||
|
||||
| Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 2 Всего: 27 |
Попробуй As Double
-------------------- Возмездие настигнет |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
а если точно
|
|||
|
||||
| Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 2 Всего: 27 |
Вот пример.Там вообще как вариант переменные объявлены
Dim A,retval A=123.456789 retval=Round(A) 'возвращается 123 retval=Round(A,3) 'возвращается 123.457 Это сообщение отредактировал(а) Старуха - 18.4.2005, 22:01 -------------------- Возмездие настигнет |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
retval=Round(A,3) 'возвращается 123.457
мне нужно что бы число округлялось до СОТЫХ то есть в данном варианте результат был 123,46 третий знак после запятой больше 5 значит второй знак на 1 больше, а 3-й знак отсекается. програмка будет считать деньги. Простое отсечение знаков после запятой влечет потерю в некоторых расчетах (там гда 3-й знак после запятой от 5до 9 ) - 1 копейки. Мне же нужна точность. Как это сделать? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Во бред-то!!! 1) Если тебе нужна точность - коню понятно что никаких округлений не должно быть и в помине! сколько цифр есть - столько за собой и тащи. 2) Округление соответственно - только при выводе окончательного результата. 3) Если считаешь деньги - округлять надо по бухгалтерским правилам, а не к ближайшему целому. и зарегистрился бы... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
А вообще Akina прав, бред какой-то, если нужна точность, напиши код, который считает в простых дробях (на примере кусочков торта) -------------------- i_i (';') (V) ![]() |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: 4 Всего: 4 |
Всякого рода Round - ерунда. Стандартный вид округления -
Ежели округлять до десятых, то A=int(a+.05) и т.д. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Akina
Почему бред? ты же не можеш выдать человеку зарплату 1000,129 рублей ? Сумма выдачи будет 1000,13 руб |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
А если 1000.125? Сумма выдачи будет - сколько? правильно, 1000.12. А если сумма 1000.115? правильно, тоже 1000.12. Вот только ни одна функция округления так не делает (вернее где-то что-то видел, но математическое округление такого не делает никогда). -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| ArtNeoX |
|
|||
|
Unregistered |
Эх вы?
неужели это так сложно? вот ответ на загаданную задачку Private Sub Command1_Click() Dim X As Double X = 123.457 X2 = Format(X, "0.00\0") Text1 = Round(X2, 2) End Sub |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
ArtNeoX
Ответ неправильный. 0.025 он превращает в 0.03, что по правилам финансового округления недопустимо. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 2 Всего: 27 |
Точность.Кому что надо.Я недавно округляла до 50руб.Я так думаю если заказывают надо заложить условие,если остаток больше 4 и сделать то ,что ты описал выше.А вообще есть бухгалтерские функции.Надо почитать.
-------------------- Возмездие настигнет |
|||
|
||||
| Gannibal |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 742 Регистрация: 15.4.2003 Где: 010101 Репутация: 18 Всего: 17 |
в этой строке Val убери ;) и тогда будет тебе 5.12 Это сообщение отредактировал(а) M.E.G.U.S - 19.4.2005, 19:53 -------------------- Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить! |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Akina, не соглашусь с тобой
" 0.025 он превращает в 0.03, что по правилам финансового округления недопустимо." 0.025 - это две с половиной копейки округляется к ближайшему целому то есть 3 копейки 0,024 - округлится к ближайшему целому - 2 копейки. |
|||
|
||||
| Gannibal |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 742 Регистрация: 15.4.2003 Где: 010101 Репутация: 18 Всего: 17 |
вот функция если поможет в решении вашей задачи
у меня вот что возникло а нельзя просто форматировать с помощью FormatCurrency() ? вот короче ещё так попробывал сделать
Это сообщение отредактировал(а) M.E.G.U.S - 19.4.2005, 20:25 -------------------- Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить! |
||||
|
|||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |