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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ОГРАНИЧИТЬ КОЛЛИЧЕСТВО СИМВОЛОВ ПОСЛЕ ЗАПЯТОЙ 
:(
    Опции темы
NikoLLa
Дата 25.9.2005, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Товарищи, объясните пожалуйста как ограничить в vb колличество символов, которые нужно вывести на экран. Допустим есть число 3,141516, а надо вывести 3,14. Заранее спасибо!
PM MAIL   Вверх
Spawn™Production®
Дата 25.9.2005, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



mid "Обрабатываемый текст", номер символа с которого начинаем, сколько символов берём.
Например:
Код
Dim text, text2 as string
text = "3,141516"
text2 = mid(text, 1, 4)
Print text2
Видим результат - 3,14

Это сообщение отредактировал(а) Spawn™Production® - 25.9.2005, 21:48


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Exception
Дата 25.9.2005, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



а чтобы не только с однозначным работало:
Код

Function Cut (d As Double) As Double
Dim temp As Integer
temp = InStr$(d, ".")
Cut = Left$(d, temp + 2)
End Function

писал вслепую, проверьте
Добавлено @ 22:17
ЗЫ
число пи = 3.1415926535.. если нады
PM   Вверх
Akina
Дата 25.9.2005, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



А еще есть гениальная функция Format


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

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


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Которая имхо не очень подходит для того, чтобы не давать ввести больше, чем две цифры после запятой (думаю именно это хочет NikoLLa).

Можно еще попробовать Microsoft Masked Edit Box и поставить там Mask Property = ###,## например, но и это тоже не очень...
Наверно единственное, что остается так это что-нибудь по типа того, что предложил Run-time error...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Akina
Дата 26.9.2005, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(cardinal @ 26.9.2005, 14:32)
Которая имхо не очень подходит для того, чтобы не давать ввести больше, чем две цифры после запятой (думаю именно это хочет NikoLLa).

ну... я ориентировался на исходный пост... впрочем наверное ты прав окажешься smile


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

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


Unregistered











NikoLLa
Цитата(NikoLLa @ 25.9.2005, 21:18)
Товарищи, объясните пожалуйста как ограничить в vb колличество символов, которые нужно вывести на экран. Допустим есть число 3,141516, а надо вывести 3,14. Заранее спасибо!

Код

Option Explicit

Private Sub Command1_Click()
Dim S As Single

   S = 3.1415926
   MsgBox (Left(S, 4))

End Sub

Ну, а так не проще будет? smile Функции Left("....", number) Right("....", number)
  Вверх
Гость_Voldemar2004
Дата 26.9.2005, 14:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











NikoLLa
Цитата(NikoLLa @ 25.9.2005, 21:18)
Товарищи, объясните пожалуйста как ограничить в vb колличество символов, которые нужно вывести на экран. Допустим есть число 3,141516, а надо вывести 3,14. Заранее спасибо!

Код

Option Explicit

Private Sub Command1_Click()
Dim S As Single

   S = 3.1415926
   MsgBox (Left(S, 4))

End Sub

Ну, а так не проще будет? smile Функции Left("....", number) Right("....", number)
Извините за Guest, просто сейчас на работе сижу smile С разных компов в инет выхожу smile)
  Вверх
Exception
Дата 26.9.2005, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



странные вы все..
волдемар, спаун,
ваши ф-ции ведь не работают, если в числе больше одного знака. надо ещё ИнСтр юзать
PM   Вверх
Spawn™Production®
Дата 26.9.2005, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



Run-time error, нам никто чёткой задачи не ставил... спросили как можно сделать, мы показали...
Добавлено @ 16:31
К тому же, если всё правильно делать, то в число невозможно будт ввести больше 1 знака...


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
NikoLLa
Дата 26.9.2005, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile Необходимо, чтобы пользователь мог выбрать сколько символов выводилось на экран после запятой, а не с первого символа числа. А то что написал Run-time error я вообще понять не могу
PM MAIL   Вверх
cardinal
Дата 26.9.2005, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Я бы сделал так:
Код

Function LimitTextInput(source) As String
Const Numbers$ = "0123456789,"  ' эти символы разрешены

' backspace = 8
If source <> 8 Then
    If InStr(Numbers, Chr(source)) = 0 Then
        LimitTextInput = 0
        Exit Function
    End If
End If
LimitTextInput = source
End Function

Private Sub Text1_Change()
If InStr(1, Text1.Text, ",") And Len(Text1.Text) > InStr(1, Text1.Text, ",") + 2 Then
        Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
        Text1.SelStart = Len(Text1.Text)
    End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = LimitTextInput(KeyAscii)
If InStr(1, Text1.Text, ",") Then
    If KeyAscii = 44 Then KeyAscii = 0
End If
End Sub

Цитата(NikoLLa @ 26.9.2005, 15:03)
Необходимо, чтобы пользователь мог выбрать сколько символов выводилось на экран после запятой

Поизучай этот код и поймешь как это сделать...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Spawn™Production®
Дата 26.9.2005, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



NikoLLa, так бы сразу и сказали smile
Код
Sub Form_Load()
Dim num as Double
Dim sim as Integer
num = 3.1415926535
sim = InputBox("Введите количество отображаемых символов перед запятой", "Кол-во вимволов", 2)
msgbox "Результат: " & mid(str(num), 3, sim)
End Sub



--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Gannibal
Дата 26.9.2005, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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




Цитата(Spawn @ 26.9.2005, 16:19)
Sub Form_Load()
Dim num as Double
Dim sim as Integer
num = 3.1415926535
sim = InputBox("Введите количество отображаемых символов перед запятой", "Кол-во вимволов", 2)
msgbox "Результат: " & mid(str(num), 3, sim)
End Sub


Spawn™Production® слушай код у тебя нерабочий, когда задаёшь количество знаков после точки так выводит на один меньше ;) поправь smile хотя сам поправил smile

Код

Sub Form_Load()
Dim num As Double
Dim sim As Integer
num = 3.1415926535
sim = InputBox("Введите количество отображаемых символов перед запятой", "Кол-во вимволов", 2)
msgbox "Результат: " & mid(str(num), 3, sim + 1)
End Sub



NikoLLa а зачем тебе числа после запятой обрезать но если обрезаешь значит округлять надо нет? или ненадо?


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


Новичок



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

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



M.E.G.U.S Нет округлять не надо.
Spawn™Production®, M.E.G.U.S Но прога не выводит первого знака(перед запятой )Как сделать

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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