powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Округление
12 сообщений из 12, страница 1 из 1
Округление
    #36242553
Insainer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня необходимо округлить число с 4 - 7 знаками после запятой. Ни Int, ни Round не справляются с задачей. Что делать?
Int(3422.4543) = ...
...
Рейтинг: 0 / 0
Округление
    #36242556
Insainer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Округлять до Integer
...
Рейтинг: 0 / 0
Округление
    #36242570
astatsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Insainer,
Int(3422.4543) = 3422
А у меня округляет :-Р

Что хоть возвращает?
...
Рейтинг: 0 / 0
Округление
    #36242594
astatsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Int просто откидывает дробную часть и все.
Round - банковское округление
...
Рейтинг: 0 / 0
Округление
    #36242868
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно наверное перед округлением умножить на 100-1000-10000, округлить, затем разделить и опять округлить... :0
...
Рейтинг: 0 / 0
Округление
    #36243300
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Функции VBScript
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Round(x, [numdecimal]) - Возвращает результат округления числа x с точностью до numdecimal знаков после запятой.

x =  1 . 1234567890123456 
y = Round(x,  7 )
MsgBox y

Результат  1 , 1234568 
...
Рейтинг: 0 / 0
Округление
    #36243510
Insainer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
TextBox120.Value = (Sum * TextBox118.Value) / TextBox117.Value

TextBox119.Value = TextBox120.Value * TextBox117.Value + _
TextBox115.Value * TextBox116.Value *  24  * TextBox121.Value + _
TextBox4.Value * TextBox5.Value *  8  * TextBox114.Value * TextBox121.Value

TextBox120.Value = 3000.23242342

Пишет ошибку - type mismutch ???
...
Рейтинг: 0 / 0
Округление
    #36243512
Insainer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
TextBox120.Value = Int(TextBox120.Value)
-тоже самое???
При целых делениях все идет нормально...
...
Рейтинг: 0 / 0
Округление
    #36243515
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас используется запятая в качестве разделителя десятичных разрядов, а в текстбоксе используется точка. Нужно либо использовать запятую в текстбоксах, либо поменять системный разделитель на точку, либо использовать Val(), для которой точка всегда является разделителем десятичных разрядов:

TextBox2 = CInt(Val(TextBox1))

Обратите внимание на CInt(), в отличие от Int()
...
Рейтинг: 0 / 0
Округление
    #36243518
Insainer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, сейчас все работает. Использовал Val()
...
Рейтинг: 0 / 0
Округление
    #36248436
astatsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Insainer,
Я бы еще советовал использовать функции приведения типов, т.е не так:

Код: plaintext
1.
TextBox120.Value = (Sum * TextBox118.Value) / TextBox117.Value
а так:
Код: plaintext
1.
TextBox120.Value = CStr((Sum * CDbl(TextBox118.Value)) / CDbl(TextBox117.Value))
...
Рейтинг: 0 / 0
Округление
    #36248606
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astatsaInsainer,
Я бы еще советовал использовать функции приведения типов, т.е не так:

Код: plaintext
1.
TextBox120.Value = (Sum * TextBox118.Value) / TextBox117.Value
а так:
Код: plaintext
1.
TextBox120.Value = CStr((Sum * CDbl(TextBox118.Value)) / CDbl(TextBox117.Value))

astatsa,
Проблема была не в неявном преобразовании типов, да и решено уже все :)
А в обоих приведенных Вами случаях будет ошибка, если cистемный разделитель десятичных разрядов - запятая, так как CDbl() и CStr() оперируют именно с системным разделителем.
Отладчик ругнется на CDbl("1.2") , так как не распознает точку в качестве разделителя.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Округление
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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