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

Что хоть возвращает?
...
Рейтинг: 0 / 0
09.10.2009, 16:15
    #36242594
astatsa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление
Int просто откидывает дробную часть и все.
Round - банковское округление
...
Рейтинг: 0 / 0
09.10.2009, 17:41
    #36242868
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление
Можно наверное перед округлением умножить на 100-1000-10000, округлить, затем разделить и опять округлить... :0
...
Рейтинг: 0 / 0
09.10.2009, 22:53
    #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
10.10.2009, 03:50
    #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
10.10.2009, 03:54
    #36243512
Insainer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление
Код: plaintext
TextBox120.Value = Int(TextBox120.Value)
-тоже самое???
При целых делениях все идет нормально...
...
Рейтинг: 0 / 0
10.10.2009, 04:50
    #36243515
ZVI
ZVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление
У Вас используется запятая в качестве разделителя десятичных разрядов, а в текстбоксе используется точка. Нужно либо использовать запятую в текстбоксах, либо поменять системный разделитель на точку, либо использовать Val(), для которой точка всегда является разделителем десятичных разрядов:

TextBox2 = CInt(Val(TextBox1))

Обратите внимание на CInt(), в отличие от Int()
...
Рейтинг: 0 / 0
10.10.2009, 05:06
    #36243518
Insainer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление
Большое спасибо, сейчас все работает. Использовал Val()
...
Рейтинг: 0 / 0
13.10.2009, 16:17
    #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
13.10.2009, 17:13
    #36248606
ZVI
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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Округление / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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