Форматировать цифирь

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Форматировать цифирь

Сообщение MOV » 30.03.2005 (Ср) 17:47

Есть как целые числа, так и с дробью
Надо, не используя формат Currency выводить их так, чтобы всегда отображалось два знака после запятой, даже если число, целое и не имеет дробной части.
Можно черкануть процедуру, но неужели нет ничего проще? Типа Format

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 30.03.2005 (Ср) 17:51

Оно и есть:
новая цифирь = Format (старая цифирь, "# ##0.00")
Век живи - век учись!
www.detal-plast.narod.ru

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 31.03.2005 (Чт) 8:23

Спасибо. И вопрос в дгонку:

Код: Выделить всё
Private Sub Form_Load()
Dim s As String
Dim d As Long

s = "115.1"

d = d + Val(s)
Debug.Print d
End Sub


val(s)=115,1, но d будет равно 115!
бред какой-то :? отваливается дробная часть

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 31.03.2005 (Чт) 8:39

так это, d у тебя типа long

а енто целый тип данных

поставь ее single
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 31.03.2005 (Чт) 8:46

Спасибо. Ну и балда :oops: ! :D совсем отвык

А вот еще вопрос:
Код: Выделить всё
Private Sub Form_Load()
Dim s As String
Dim d As Long
s = "115.1"
Debug.Print Format(s, "#0.00")
End Sub


Debug.Print выводит ерунду мне надо, чтобы вывел 155.10, а он -651956,00 дает

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 31.03.2005 (Чт) 9:24

MOV писал(а):Спасибо. Ну и балда :oops: ! :D совсем отвык

А вот еще вопрос:
Код: Выделить всё
Private Sub Form_Load()
Dim s As String
Dim d As Long
s = "115.1"
Debug.Print Format(s, "#0.00")
End Sub


Debug.Print выводит ерунду мне надо, чтобы вывел 155.10, а он -651956,00 дает
Убери шарп, т.е.
Код: Выделить всё
Debug.Print Format(s, "0.00")
Последний раз редактировалось snov 31.03.2005 (Чт) 9:25, всего редактировалось 1 раз.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 31.03.2005 (Чт) 9:25

Я думаю, что символы формата "#0.00" касаются только циферек, а для строковых есть другие, типа прижать влево, право и т.д.

если s сделать integer все будет хорошо.
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.03.2005 (Чт) 9:26

Код: Выделить всё
Private Sub Form_Load()
Dim s As String
Dim d As Long
s = "115.1"
Debug.Print Format(Val(s), "#0.00")
End Sub
Lasciate ogni speranza, voi ch'entrate.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 31.03.2005 (Чт) 9:29

О! :o
Оно. Спасибо.
Совсем плохой стал :?

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 31.03.2005 (Чт) 9:32

У тебя не распознается параметр как параметр типа String. Поставь запитую вместо точки, при необходимости можно знак обрабатывать (например функцией Replace). Если у тебя всегда будет ставиться точка можешь применить функцию CStr (значение).

Private Sub Form_Load()
Dim s As String
Dim d As Long
s = "115,1"
Debug.Print Format(s, "#0.00")
End Sub

или

Private Sub Form_Load()
Dim s As String
Dim d As Long
s = CStr (115.1)
Debug.Print Format(s, "#0.00")
End Sub
Век живи - век учись!
www.detal-plast.narod.ru

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 31.03.2005 (Чт) 10:19

Да нет, нет. Все разобрался. Спасибо. Надо юзать Val, как написал alibek.
Ну и Replace тоже иногда пригождается.
В общем, спасибо всем. Все пошло.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 86

    TopList  
cron