Large_Integer -> String

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

Large_Integer -> String

Сообщение GM » 23.11.2005 (Ср) 8:00

У меня переменная с типом Large_Integer, как мне представить ее содержимое в виде cтроки.
В принципе все работает когда число < 2 млрд., нужно просто возвращать LowPart. Но когда число больше надо что-то делать и с HighPart. Не подскажите что?

Для тех кто не знает о Large_Integer:
Код: Выделить всё
type Large_Integer
LowPart as long
HighPart as long
end type
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.11.2005 (Ср) 8:04

GM, наводящий вопрос: умеешь делить Large_Integer на 10?
Изображение

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 23.11.2005 (Ср) 8:08

GM, наводящий вопрос: умеешь делить Large_Integer на 10?

Не понял, так что-ли
Код: Выделить всё
li.lowpart =li.lowpart /10
li.highpart =li.highpart /10

Ты имееш ввиду свести число до 2 млрд, или что?
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.11.2005 (Ср) 8:16

Конечно, не так.
Столбиком вас в школе учили делить? :-)
Изображение

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 23.11.2005 (Ср) 8:25

Пока поискал в инете, вот что нашел,
Код: Выделить всё
Private Function CLargeInt(Lo As Long, Hi As Long) As Double
    Dim dblLo As Double, dblHi As Double   
    If Lo < 0 Then
        dblLo = 2 ^ 32 + Lo
    Else
        dblLo = Lo
    End If   
    If Hi < 0 Then
        dblHi = 2 ^ 32 + Hi
    Else
        dblHi = Hi
    End If
    CLargeInt = dblLo + dblHi * 2 ^ 32
End Function

Такой вариант будет работать :?: или лучше делить :?:
Конечно, не так.
Столбиком вас в школе учили делить?

Да, вроде бы :)
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.11.2005 (Ср) 8:28

GM писал(а):Пока поискал в инете, вот что нашел,
Код: Выделить всё
Private Function CLargeInt(Lo As Long, Hi As Long) As Double
    Dim dblLo As Double, dblHi As Double   
    If Lo < 0 Then
        dblLo = 2 ^ 32 + Lo
    Else
        dblLo = Lo
    End If   
    If Hi < 0 Then
        dblHi = 2 ^ 32 + Hi
    Else
        dblHi = Hi
    End If
    CLargeInt = dblLo + dblHi * 2 ^ 32
End Function

Такой вариант будет работать :?: или лучше делить :?:

Если тебя не смущает огрубление результата до скольки-то (порядка 12) цифр, то будет работать.
Если тебе нужна точность до байта, тогда нужно делить.
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 24.11.2005 (Чт) 1:48

снос разряда вправо?
ХЎ


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

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

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

    TopList