Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: число не влазит в переменную! (я чайник) Добавлено: 20.06.03 11:09  

Автор вопроса:  Trusishka | ICQ: 229751913 

Уважаемые зубры , подскажите как засунуть в переменную громадное число.

"факториал от 9999"

оно не влазит не в Double, не в Long

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #1 Добавлено: 20.06.03 11:33

Попробуй воспользоваться переменной типа variant (Object для VB.NET)

Ответить

Номер ответа: 2
Автор ответа:
 Trusishka



ICQ: 229751913 

Вопросов: 36
Ответов: 48
 Профиль | | #2 Добавлено: 20.06.03 12:47

У меня VB6

Variant не влазит ((

Ответить

Номер ответа: 3
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #3
Добавлено: 20.06.03 13:59

Попробуй объявить как стринг или лонг

Ответить

Номер ответа: 4
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #4
Добавлено: 20.06.03 14:02

Или что-то типа:

Dim ix as long*256

Dim ix as integer*256 и т д...

Ответить

Номер ответа: 5
Автор ответа:
 Trusishka



ICQ: 229751913 

Вопросов: 36
Ответов: 48
 Профиль | | #5 Добавлено: 20.06.03 18:40

Все равно не  влазит    

Ответить

Номер ответа: 6
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #6
Добавлено: 21.06.03 10:38

Ну, тогда создай невилимый TextBox!

Ответить

Номер ответа: 7
Автор ответа:
 Trusishka



ICQ: 229751913 

Вопросов: 36
Ответов: 48
 Профиль | | #7 Добавлено: 21.06.03 11:29

Немного не понятно-  зачем он нужен и как его использовать?

это же "переменная" она вставлена в формулу и постоянно меняется.

Поясни пожалуйста свою мысль

Ответить

Номер ответа: 8
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #8
Добавлено: 21.06.03 12:29

Ну, как я понял, у тебя ГИГАНТСКОЕ число, так? Вот. Если его представить как текст(не только текстбокс, но и стрингом) то можно получить 65536-разрядное число!, но я не пробовал так, может и не получиться. Там мне писали, что можно и 12 гига положить в стринг , а не только 65536 символов!!!!!!!!!!!!!

Ответить

Номер ответа: 9
Автор ответа:
 Russian Neo



ICQ: 248318020 

Вопросов: 22
Ответов: 195
 Web-сайт: kazbayev.narod.ru
 Профиль | | #9
Добавлено: 21.06.03 12:45

to Morpheus:

А потом ты textbox на textbox делить и умножать будешь (а так же др. математические действия)?

Ответить

Номер ответа: 10
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #10
Добавлено: 21.06.03 13:07

Когда то (в детстве) делал класс BigNumber, где число содержалось в String и описывал математические действия для этих классов. Что то подобное тебе и надо.

По другому наврядли получится.

Ответить

Номер ответа: 11
Автор ответа:
 K-00



ICQ: 179750444 

Вопросов: 7
Ответов: 20
 Профиль | | #11 Добавлено: 21.06.03 14:18

А почему нельзя длинной арифметикой?

 Считаешь по скольку-нибудь цифр числа (хоть по 1000) и заносишь в массив!

Ответить

Номер ответа: 12
Автор ответа:
 univercal



ICQ: 173084484 

Вопросов: 5
Ответов: 76
 Web-сайт: univercal-s.narod.ru
 Профиль | | #12
Добавлено: 21.06.03 14:27

Вообще-то, при вычислении чего-либо VB переводит значение String в минимальный допустимый числовой тип. В случае с большими числами это Double, как следствие - максимально возможное значение, хранимое в переменной - 8 байт (в идеале 2^64-1, а если с отрицательными значениями, то 2^63-1). Факториал, я думаю, не вместится. Можешь попробовать запихнуть в массив Double :)

Ответить

Номер ответа: 13
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #13 Добавлено: 21.06.03 14:39

Можно попробовать пихать число в массив поразрядно.

Ну yghbvth у тебя есть число 1254, массив A будет такой

A[0]=4

A[1]=5

A[2]=2

A[3]=1

Например, теперь тебе надо умножить это число на 5.

Берешь поэлементно числа из массива и умножаешь на 10 в степени "индекс этой переменной" и складываешь полученные числа.

Т.е. имеем (A[3]*10^3)+(A[2]*10^2)+(A[1]*10^1)+(A[0]*10^0),

где A[0],A[1],A[2],A[3] - переменные из массива

0,1,2,3 - индексы переменных

Надеюсь подойдет =)

Ответить

Номер ответа: 14
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #14
Добавлено: 21.06.03 14:51

Попробуй такое

Decimal Data Type

      

Decimal variables are stored as 96-bit (12-byte) unsigned integers scaled by a variable power of 10. The power of 10 scaling factor specifies the number of digits to the right of the decimal point, and ranges from 0 to 28. With a scale of 0 (no decimal places), the largest possible value is +/-79,228,162,514,264,337,593,543,950,335. With a 28 decimal places, the largest value is +/-7.9228162514264337593543950335 and the smallest, non-zero value is +/-0.0000000000000000000000000001.

Note   At this time the Decimal data type can only be used within aVariant, that is, you cannot declare a variable to be of type Decimal. You can, however, create a Variant whose subtype is Decimal using the CDec function.

 

Даже в ASM такого нет (максимум Ten Byte) :)

Определяешь с помощью CDEC

Ответить

Номер ответа: 15
Автор ответа:
 univercal



ICQ: 173084484 

Вопросов: 5
Ответов: 76
 Web-сайт: univercal-s.narod.ru
 Профиль | | #15
Добавлено: 21.06.03 15:08

В Асме можно все вычисления проводить по своим правилам, и плевать тебе тогда на всякие ограничения типов :)

To Chill:

Быстрее будет не по десятиричным разрядам, а по шестнадцатиричным или 256ричным. Процессор быстро работает только со степенями двойки, особенно если показатель степени - сам является такой степенью :) 2^4, 2^16...

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам