Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2013, 15:00   #1
vova_
Форумчанин
 
Аватар для vova_
 
Регистрация: 07.11.2011
Сообщений: 100
По умолчанию Double в String. язык VBA

зравствуйте подскжите пожалуста
как перевести переменную Doudle в переменную String
в формате 1235546522...31232213100000000...0
а не в формате 1,23554652212332566468Е+20

Код:
...
Dim a As Double
...
10:
If Right$(Str$(a), 1) = "0" Then a = CDbl(Left$(Str$(a), Len(Str$(a)) - 1))
If Right$(Str$(a), 1) = "0" Then GoTo 10
что ипользовать вместо Str$(a)?
vova_ вне форума Ответить с цитированием
Старый 20.01.2013, 15:57   #2
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

а как вы определяете что число превратилось именно в такой формат 1,23554652212332566468Е+20?
Вы число случайно в ячейку не выводит?
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 20.01.2013, 17:13   #3
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Не видя данных сложно советовать в данном случае, но попробуйте не Str$, а CStr(). Т.е. вызвать непосредственно явный конвертер.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 20.01.2013, 18:05   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

s=format(a,string(20,"0"))
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 20.01.2013, 19:59   #5
vova_
Форумчанин
 
Аватар для vova_
 
Регистрация: 07.11.2011
Сообщений: 100
По умолчанию

Цитата:
Сообщение от Watcher_1 Посмотреть сообщение
а как вы определяете что число превратилось именно в такой формат 1,23554652212332566468Е+20?
Вы число случайно в ячейку не выводит?
ставлю точки где приостановитца
и смотрю что какой переменной присвоино в єтот момент
vova_ вне форума Ответить с цитированием
Старый 22.01.2013, 16:27   #6
vova_
Форумчанин
 
Аватар для vova_
 
Регистрация: 07.11.2011
Сообщений: 100
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
s=format(a,string(20,"0"))
пробовал но эта команда добавляет к началу строки "0"-и чтоб её длинна достигла 20

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Не видя данных сложно советовать в данном случае, но попробуйте не Str$, а CStr(). Т.е. вызвать непосредственно явный конвертер.
тоже попробовал в моём случае формируетца строка 12123223213.2136

попробовал (Format(a, "0")

вот код
Код:
Private Sub CommandButton1_Click()
Dim a, b As Double
a = 1
b = 0
For i = 1 To 56
a = a * 2
Next i
For k = 57 To 100
a = a * 2
10:
If Right$(Format(a, "0"), 1) = "0" Then a = CDbl(Left$(Format(a, "0"), Len(Format(a, "0")) - 1))
If Right$(Format(a, "0"), 1) = "0" Then GoTo 10
Next k
For j = 1 To Len(Format(a, "0"))
b = b + CDbl(Left$(Right$(Format(a, "0"), 1), i))
Next j
TextBox1.Text = Format(b, "0")
End Sub
но почемуто правыльно генерируютца значеныя лиш до k=58
при k=59 значение переменной а на еденицу большэ чем должно быть

помогите пожалуста разобратца
vova_ вне форума Ответить с цитированием
Старый 22.01.2013, 18:54   #7
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Помогите и Вы нам - приложите пример своих данных.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 22.01.2013, 19:02   #8
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

пробовал но эта команда добавляет к началу строки "0"-и чтоб её длинна достигла 20
Код:
s=format(a,string(20,"#"))
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 22.01.2013, 21:32   #9
vova_
Форумчанин
 
Аватар для vova_
 
Регистрация: 07.11.2011
Сообщений: 100
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Помогите и Вы нам - приложите пример своих данных.
суть задачи найти сумму цифр 2^1000
для начала решил попробовать для 2^100
так как числа 2^1 - 2^100 можно пощитать в Excel что я и зделал в документе

во втором цикле ставил точку для приостановки на Next k
и в определённый момент значения переменной а перестают совпадать с расчитаными ранее

програмка в документе
Вложения
Тип файла: rar Problem 16.rar (17.4 Кб, 18 просмотров)
vova_ вне форума Ответить с цитированием
Старый 23.01.2013, 08:24   #10
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

а не пробовали сделать поразрядное сложение? сделать два массива A(1000) и B(1000) и бинарно сложить в цикле. это можно сделать как с массивами VBA, так и формулами.


открою секрет: для сложения без потери точности вам не хватит ни одного из встроенных типов переменных, поскольку они для вашего задания должны быть 1000 битов (125 байт)
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование double в string Misha-QWERTY Visual C++ 4 17.04.2011 15:00
Преобразование double в string без округления Дамир C# (си шарп) 5 10.02.2011 16:54
String to double ? NiCola999 Общие вопросы C/C++ 3 14.03.2010 12:21
Перевод String в Double mauseO Помощь студентам 2 29.01.2010 15:29