0 десятых отбрасывается

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

0 десятых отбрасывается

Сообщение kminas » 18.04.2008 (Пт) 10:28

Если число заканчивается на 0, то он отбрасывается. Например, если я ввожу 6,0 возвращается число 6; если ввожу 6,1 возвращается 6,1. Тип переменной Single или Double. Как сохранить число, но чтобы переменная была не Variant или String.
Константин

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 18.04.2008 (Пт) 10:33

Для вывода пользователю, используй функицю Format. Она позволяет писать после запятой сколько хочешь нулей.
I don't understand. Sorry.

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 18.04.2008 (Пт) 10:33

Спасибо, попробую.
Константин

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 18.04.2008 (Пт) 16:35

RayShade Не помогло.
Последний раз редактировалось kminas 18.04.2008 (Пт) 17:08, всего редактировалось 1 раз.
Константин

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 18.04.2008 (Пт) 16:48

Эммм.. Что именно пробовал?
label:
cli
jmp label

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 18.04.2008 (Пт) 17:08

функицю Format
Константин

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 18.04.2008 (Пт) 17:41

Как пробовал?

Код: Выделить всё

Dim n As Double
n = 2
MsgBox Format(n, "0.0")
Salus populi suprema lex

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 18.04.2008 (Пт) 18:25

dr.MIG Не совсем.
У меня типа
Код: Выделить всё
Dim n As Double
text1.text = 6,1
n=CDbl(text1.text)
Константин

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 18.04.2008 (Пт) 18:44

Не совсем понял, конечно, что конкретно надо... Где именно и когда в программе тебе надо показывать число в формате "0.0"?

Перечитал первый пост... Не надо пытаться сохранить число в формате c нулём после запятой (это я про String). Пусть оно хранится в Double или Single. Просто когда его надо отобразить (в MsgBox'e, текстовом поле или ещё где), используй Format(n, "0.0").
Salus populi suprema lex

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 18.04.2008 (Пт) 20:16

dr.MIG
В документе Word, но этот вариант с хранением не подходит. Если "." Single или Double не воспринимает. Я преобразую, вернее пробую преобразовывать с помощью такой конструкции:
Код: Выделить всё
n = Format(CDbl(Replace(text1.Text, ".", ",", 1, 1)), "#00.0")
. И при точке, и при запятой 0 отбрасывается. Просто в одном месте должно быть число без нуля, а, в другом с нулем. Впрочем на работе говорят, не парься, бусть будет без нуля.
Константин

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 19.04.2008 (Сб) 12:30

Угу.. И на первой же машине с измененным разделителем дробной части числа этот код перестанет работать.. )
label:
cli
jmp label

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 19.04.2008 (Сб) 12:39

iGrok
Во-первых, машина одна, ибо пока и один Офис еще не купили. Во-вторых, число вставляется в документ и ему будет по барабану какой там знак.
Константин

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 19.04.2008 (Сб) 12:53

На всякий случай -- текущий разделитель можно получить так: Format(0, ".")
Salus populi suprema lex

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 19.04.2008 (Сб) 18:06

dr.MIG, спасибо
Константин

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 20.04.2008 (Вс) 16:49

Все вопрос решил. Правда, левой пяткой правое ухо, но, кому интересно

Код: Выделить всё
Dim comma  As String
If InStr(1, text1.Text, ".0") Or InStr(1, text1.Text, ",0") > 0 Then
comma = ",0"
End If
Константин

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

Сообщение alibek » 21.04.2008 (Пн) 10:15

kminas, такое впечатление, что ты не читаешь, что тебе пишут.
Правильное решение тебе сказали в первом же ответе.
А вместо него ты какую-то чушь написал.
Lasciate ogni speranza, voi ch'entrate.

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 21.04.2008 (Пн) 18:30

alibek Значит тупой или глаза мои назад смотрят, только вот этот вариант,
kminas 18.04.2008 (Пт) 20:16
Код: Выделить всё
n = Format(CDbl(Replace(text1.Text, ".", ",", 1, 1)), "#00.0")

как и другие подобные (более простые) не идут.
Укажи, пожалуйста, что в этом коде не так и я снова попробую.
Константин

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 21.04.2008 (Пн) 18:52

Если я правильно понял, то ещё раз повторю: откуда это порочное желание сохранить в переменную число в формате "0.0"? Пусть оно лежит в Single как и лежало. Просто при выводе его из этой переменной куда бы то ни было используй Format(n, "0.0"). Если ты всё-таки считаешь, что мы тебя понимаем не правильно, то прикрепи конкретный пример и напиши что и как там должно работать и что не работает в данный момент.
Salus populi suprema lex

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 21.04.2008 (Пн) 19:00

dr.MIG
Т.е. ты считаешь, что код надо разделить, Format ставить уже в коде самой исполняемой процедуры. Неужели за 1 шаг может что-то измениться? Щас попробую.
Константин

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 21.04.2008 (Пн) 20:38

dr.MIG
Спасибо, наконец вышло. Но не в конечной процедуре. Я уже и забыл. У меня это число вставляется в строковую переменную, а, затем, в документ. И вот там я, по твоему совету, Format то и вставил, а переменная то строковая и она, родимая, его никуда не пущает. Я уще пробовал, например и 1 6 , 0 писать. Все равно выходит нормально 16,0. И с точкой пробовал.
Спасибо!
Константин


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

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

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

    TopList