Как отобразить 24х знаковое число на Lable

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

Как отобразить 24х знаковое число на Lable

Сообщение giaber » 05.12.2009 (Сб) 15:44

Есть число Single, как получить его десятичное представление, то есть скажем чтоб отобразить его в TextBox
Например:
число такое: s = 1.05890473869562E+23
а отобразить так:105890473869562218590463
Спасибо
Последний раз редактировалось giaber 05.12.2009 (Сб) 22:19, всего редактировалось 2 раз(а).

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Re: Как перевести в десятичную форму?

Сообщение burik » 05.12.2009 (Сб) 17:12

Например, так:
Код: Выделить всё
Format(s, "###,###,###,###,###,###,###,###.00")


P.S. В single это число округлиться до 1.058905E+23 (если не ошибаюсь), если нужна такая точность, то используй double.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

giaber
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 14.01.2009 (Ср) 13:51

Re: Как перевести в десятичную форму?

Сообщение giaber » 05.12.2009 (Сб) 20:50

Спасибо!

giaber
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 14.01.2009 (Ср) 13:51

Re: Ответ получен (Как перевести в десятичную форму)

Сообщение giaber » 05.12.2009 (Сб) 22:18

Вот наверное так надо задать вопрос:
в десятичной форме целое число имеет 24 знака. Как можно его записать, и как можно вывести его на скажем лейбл в десятичной форме?
Стандартными методами.

To burik
а сколько байт будет занимать такое число?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Ответ получен (Как перевести в десятичную форму)

Сообщение Viper » 06.12.2009 (Вс) 20:11

giaber писал(а):а сколько байт будет занимать такое число?
Double занимает 8 байт.
Весь мир матрица, а мы в нем потоки байтов!

giaber
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 14.01.2009 (Ср) 13:51

Re: Как отобразить 24х знаковое число на Lable

Сообщение giaber » 06.12.2009 (Вс) 20:25

Совсем запутался! на другом форуме мне говорят что стандартными методами в VB это невозможно! Я ничего не понимаю...
То что дабл 8 байт занимает я прочитал, но ведь в дабл это число не запишется, как мне говорят

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Re: Как отобразить 24х знаковое число на Lable

Сообщение burik » 06.12.2009 (Вс) 21:12

В VB есть определенный набор числовых типов данных. Каждый тип позволяет хранить определенный набор чисел.

Рассмотрим тип Double. Число типа Double храниться в экспоненциальной форме. Т.е. 64 бита разделены на мантиссу и экспоненту (не еще один бит определяет знак числа). 11 бит отдано под экспоненту, 52 бита - под мантиссу. С помощью 52 битов можно выразить 4503599627370496 различных чисел. Т.е. мантисса изменяется от 0 до 4503599627370495. Т.е. ты можешь хранить числа в этих пределах домноженные на 10 в какой-либо степени. Следовательно ты можешь в переменную типа Double сохранить 24x значное число, но последние 8 цифр (примерно) будут нулями.

Можно рассмотреть еще тип Long. Тут все просто - 8 байт => 2568 вариантов. С учетом знаковости получаем диапазон от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 (вроде так). Т.е. в типе Long хранить 24х знаковое число не получиться.

А что за числа такие? Как они используются?
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

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

Re: Как отобразить 24х знаковое число на Lable

Сообщение alibek » 06.12.2009 (Вс) 21:17

burik, Long — это 4 байта. И ты забыл про Currency и Decimal.
Только автору топика это не поможет, пока он не научится пользоваться головой.
Lasciate ogni speranza, voi ch'entrate.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Re: Как отобразить 24х знаковое число на Lable

Сообщение burik » 06.12.2009 (Вс) 21:36

alibek писал(а):burik, Long — это 4 байта. И ты забыл про Currency и Decimal.

Хм.. Значит, ошибся таки.. :oops: В любом случае это мало что меняет.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

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

Re: Как отобразить 24х знаковое число на Lable

Сообщение alibek » 06.12.2009 (Вс) 22:17

burik писал(а):В любом случае это мало что меняет.

Decimal — меняет. Он хранит 28 десятичных разрядов.
Lasciate ogni speranza, voi ch'entrate.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Как отобразить 24х знаковое число на Lable

Сообщение Денис » 07.12.2009 (Пн) 9:50

giaber писал(а):Совсем запутался! на другом форуме мне говорят что стандартными методами в VB это невозможно!

Ой, а дайте адрес этого форума? Я с удовольствием там потопчусь...
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Как отобразить 24х знаковое число на Lable

Сообщение Debugger » 07.12.2009 (Пн) 15:14

В "цитатнике" есть ссылка на обсуждение "что такое хендл". Потопчись там?

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Как отобразить 24х знаковое число на Lable

Сообщение Денис » 07.12.2009 (Пн) 15:48

Debugger писал(а):В "цитатнике" есть ссылка на обсуждение "что такое хендл". Потопчись там?


А что за "цитатник"? :elephant:
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как отобразить 24х знаковое число на Lable

Сообщение Mikle » 08.12.2009 (Вт) 12:02

Код с применением Decimal в студию.

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

Re: Как отобразить 24х знаковое число на Lable

Сообщение alibek » 08.12.2009 (Вт) 12:28

?cdec("1234567890123456789012345678")-1
Lasciate ogni speranza, voi ch'entrate.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как отобразить 24х знаковое число на Lable

Сообщение Mikle » 08.12.2009 (Вт) 15:56

Caption = CDec("1234567890123456789012345678")
Это работает... не думал, что узнаю что-то новое про VB6.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как отобразить 24х знаковое число на Lable

Сообщение Хакер » 08.12.2009 (Вт) 15:58

Это не столько VB6, сколько COM\Variant.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как отобразить 24х знаковое число на Lable

Сообщение alex77755 » 08.12.2009 (Вт) 20:34

Caption = CDec("1234567890123456789012345678")

так даже проще Caption = "1234567890123456789012345678" :-) :-)

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

Re: Как отобразить 24х знаковое число на Lable

Сообщение iGrok » 08.12.2009 (Вт) 21:12

alex77755 писал(а):
Caption = CDec("1234567890123456789012345678")

так даже проще Caption = "1234567890123456789012345678" :-) :-)

Шутка, надеюсь?
label:
cli
jmp label

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как отобразить 24х знаковое число на Lable

Сообщение alex77755 » 09.12.2009 (Ср) 14:13

Разумеется шутка.
Вчера некогда было дописать ответ.
Интересно было бы узнать у автора откуда он берёт такие числа, что даже знает разрядность.
В то время как даже при просмотре при остановке числа показываются со степенью 10.
Я как то заинтересовался примерно таким вопросом: деление до сотого знака после запятой.
Но ничего другого не придумал, кроме деления "В столбик". Расписал процедуру и она просто выдавла мне результат в тектовом формате.

судя содержанию справки автор может вопользоватья:
тип данных Decimal
Тип данных для сохранения чисел в десятичном представлении с фактором масштабирования, равным степени 10. Без масштабирования, т.е. для целых чисел, допустимым диапазоном значений является +/-79 228 162 514 264 337 593 543 950 335. Для числа с 28 знаками в дробной части допустимым диапазоном значений является +/-7,9228162514264337593543950335. Минимальное ненулевое число, которое может быть представлено как значение типа Decimal, равняется 0,0000000000000000000000000001.

Необходимо помнить, что в настоящее время поддерживается использование типа Decimal только внутри типа Variant. Не допускается описание переменной с типом Decimal
. Пользователь, однако, имеет возможность, создать переменную типа Variant с подтипом Decimal с помощью функции CDec.

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как отобразить 24х знаковое число на Lable

Сообщение alex77755 » 09.12.2009 (Ср) 14:19

Код: Выделить всё
Caption = CDec("1234567890123456789012345678")
просто так этот код у меня выдаёт ошибку на "CDec"

Пользователь, однако, имеет возможность, создать переменную типа Variant с подтипом Decimal с помощью функции CDec.

А это ещё надо переварить: тип с подтипом - для меня пока тайга с соснами

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как отобразить 24х знаковое число на Lable

Сообщение alex77755 » 09.12.2009 (Ср) 23:13

действительно можно до 29 разрядов:
Код: Выделить всё
Private Sub Комманда1_Click()
Dim CVA, CDE, i
CVA = 12345678901234#
CDE = CDec(CVA)
For i = 1 To 80
CDE = CDec(CDE * 2)
Debug.Print CDE, Len(CDE)
Next i
End Sub


в дебагере (Последние строчки - потом ошибка):
3474999681202077305619349504 28
6949999362404154611238699008 28
13899998724808309222477398016 29
27799997449616618444954796032 29
55599994899233236889909592064 29


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 12

    TopList