Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как округлить число 
:(
    Опции темы
Guest
Дата 18.4.2005, 21:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 18.4.2005, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 2
Всего: 27



Попробуй As Double


--------------------
Возмездие настигнет
PM MAIL   Вверх
Guest
Дата 18.4.2005, 21:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а если точно
  Вверх
Staruha
Дата 18.4.2005, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 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


--------------------
Возмездие настигнет
PM MAIL   Вверх
Guest
Дата 19.4.2005, 07:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











retval=Round(A,3) 'возвращается 123.457

мне нужно что бы число округлялось до СОТЫХ
то есть в данном варианте результат был 123,46
третий знак после запятой больше 5 значит второй знак на 1 больше, а 3-й знак отсекается.

програмка будет считать деньги. Простое отсечение знаков после запятой влечет потерю в некоторых расчетах (там гда 3-й знак после запятой от 5до 9 ) - 1 копейки.
Мне же нужна точность.

Как это сделать?


  Вверх
Akina
Дата 19.4.2005, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Guest @ 19.4.2005, 08:01)
програмка будет считать деньги. Простое отсечение знаков после запятой влечет потерю в некоторых расчетах (там гда 3-й знак после запятой от 5до 9 ) - 1 копейки.
Мне же нужна точность.

Во бред-то!!!
1) Если тебе нужна точность - коню понятно что никаких округлений не должно быть и в помине! сколько цифр есть - столько за собой и тащи.
2) Округление соответственно - только при выводе окончательного результата.
3) Если считаешь деньги - округлять надо по бухгалтерским правилам, а не к ближайшему целому.

и зарегистрился бы...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Voldemar2004
Дата 19.4.2005, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Код

Private Sub Command1_Click()
Dim X As Double

X = 123.457
Z = Format(X, "0.00\0")
Print Z

End Sub


А вообще Akina прав, бред какой-то, если нужна точность, напиши код, который считает в простых дробях (на примере кусочков торта) smile smile smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Black_Star
Дата 19.4.2005, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 9.9.2003
Где: Minsk

Репутация: 4
Всего: 4



Всякого рода Round - ерунда. Стандартный вид округления -
Код

A=int(a+.5)

Ежели округлять до десятых, то A=int(a+.05) и т.д. smile
PM ICQ   Вверх
Guest
Дата 19.4.2005, 17:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Akina
Почему бред? ты же не можеш выдать человеку зарплату 1000,129 рублей ?
Сумма выдачи будет 1000,13 руб
  Вверх
Akina
Дата 19.4.2005, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Guest @ 19.4.2005, 18:44)
Почему бред? ты же не можеш выдать человеку зарплату 1000,129 рублей ? Сумма выдачи будет 1000,13 руб

А если 1000.125? Сумма выдачи будет - сколько? правильно, 1000.12. А если сумма 1000.115? правильно, тоже 1000.12. Вот только ни одна функция округления так не делает (вернее где-то что-то видел, но математическое округление такого не делает никогда).


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ArtNeoX
Дата 19.4.2005, 17:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 19.4.2005, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



ArtNeoX
Ответ неправильный. 0.025 он превращает в 0.03, что по правилам финансового округления недопустимо.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Staruha
Дата 19.4.2005, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 2
Всего: 27



Точность.Кому что надо.Я недавно округляла до 50руб.Я так думаю если заказывают надо заложить условие,если остаток больше 4 и сделать то ,что ты описал выше.А вообще есть бухгалтерские функции.Надо почитать.


--------------------
Возмездие настигнет
PM MAIL   Вверх
Gannibal
Дата 19.4.2005, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 742
Регистрация: 15.4.2003
Где: 010101

Репутация: 18
Всего: 17



Цитата
X = Val(487.50 * 15 * 0.07) / 100


в этой строке Val убери ;) и тогда будет тебе 5.12

Это сообщение отредактировал(а) M.E.G.U.S - 19.4.2005, 19:53


--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Guest
Дата 19.4.2005, 20:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Akina, не соглашусь с тобой
" 0.025 он превращает в 0.03, что по правилам финансового округления недопустимо."
0.025 - это две с половиной копейки округляется к ближайшему целому то есть 3 копейки

0,024 - округлится к ближайшему целому - 2 копейки.
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0541 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.