Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> (Vb6)Возможно ли убрать Експоненту? Exp 
V
    Опции темы
Jr13san
  Дата 28.8.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 29.7.2008
Где: г. Павлово

Репутация: нет
Всего: нет



Привет всем, кто на форуме...
Дело вот какое:
У меня в результате вычислений получается число очень маленькое и оно записывается в Text1.text как 1,1213353645Е-15 , а мне нужно чтобы записывалось число без Exp ...То есть это автоматически происходит, так задумано в бейсике.
Мне нужно, чтобы число какое есть, такое и записывалось в Text1.text.
Помогите кто может. Если вообще можно отключить эту ф-цию.
PM MAIL WWW ICQ   Вверх
I_Am_Rock
Дата 28.8.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Я так понял, нужно просто убрать последние 4 символа, чтобы оставалось так - 1,1213353645
Я правильно понял?
Вот код. Он убирает 4 посл. символа...

Код

Text1.Text = Left(Text1.Text, Len(Text1.Text) - 4)


Добавлено через 8 минут и 53 секунды
Так как не всегда есть эта буква Е, то нужно проверять.
Вот измененный код

Код

If Left(Right(Text1.Text, 4), 1) = "E" Then
Text1.Text = Left(Text1.Text, Len(Text1.Text) - 4)
End If

PM MAIL WWW   Вверх
Akina
Дата 28.8.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Jr13san @  28.8.2008,  21:30 Найти цитируемый пост)
оно записывается в Text1.text как 1,1213353645Е-15 , а мне нужно чтобы записывалось число без Exp 

ТО есть ты там хочешь получить 0,0000000000000011213353645, что ли? А тебе не кажется, что ... ммм ... ты хочешь странного?

Цитата(I_Am_Rock @  28.8.2008,  21:56 Найти цитируемый пост)
Я так понял, нужно просто убрать последние 4 символа, чтобы оставалось так - 1,1213353645

Он просил не мантиссу, а естественную форму числа, как я понимаю.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
I_Am_Rock
Дата 28.8.2008, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Akina, наверное, ты прав.
Если он хочет проводить какие-то вычисления, то ему понятное дело нужно 0,0000000000000011213353645, а не 1,1213353645
PM MAIL WWW   Вверх
JusTalionis
Дата 29.8.2008, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



У меня была такая задача. Как обычно, в своем стиле, я всё делал "руками".
Поскольку дробь у меня была не очень маленькой, и помещалась в размер дробных знаков, я сделал так:

1) Прибавил к числу 1. Экспонента пропала, естественно.
2) Перевел число в строковый вид
3) Отсек прибавленную единицу функцией Right$
4) Вместо той единицы присоединил к строке нуль (0 целых).

Всё! число (как строку) можно выводить на печать и индикацию. smile 


PM MAIL   Вверх
Akina
Дата 29.8.2008, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



JusTalionis, какой смысл рассматривать варианты, грозящие потерей точности?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Jr13san
Дата 29.8.2008, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 29.7.2008
Где: г. Павлово

Репутация: нет
Всего: нет



Мне нужно вот такое число: 0,0000000000000011213353645
Я просто к примеру такое маленикое число привёл...
Просто если в Textbox'e написано число да ещё и экспонента , то придётся вручную домножать на степень Exp...
PM MAIL WWW ICQ   Вверх
Akina
Дата 29.8.2008, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Ну и напиши свою функцию, которая выполняет преобразование - какие проблемы?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Jr13san
  Дата 30.8.2008, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 29.7.2008
Где: г. Павлово

Репутация: нет
Всего: нет



Я посмотрел и даже в Excel, там тоже идёт автоматическое округление такого числа..
Думаю что моя идея записать очень маленькое число в строковый вид не очень корректна...
Конечно можно было бы осуществить мою идёю, но не дамаю, что это нужно...
Так что тему оставляю не решённой. Тема закрыта.
Если кому этот вопрос понятен и кто может его осуществить пишите тутор...
Извините за плохую тему, постараюсь бльше не писать по пустякам...


PM MAIL WWW ICQ   Вверх
JusTalionis
Дата 31.8.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Ну написал я такую функцию от скуки...
Код

Public Function UnExp(x) As String
X1$ = Str$(x)
pe = InStr(X1$, "E")

If pe = 0 Then
  If Mid$(X1$, 2, 1) = "." Then
    X1$ = Left$(X1$, 1) + "0" + Right$(X1$, Len(X1$) - 1)
  End If
  UnExp = X1$
  Exit Function
End If

If pe = 3 Then
  X2$ = ""
Else
  X2$ = Mid$(X1$, 4, pe - 4)
End If

expn = Val(Right$(X1$, 3))

If expn < 0 Then
  X2$ = "0." + String$(-expn - 1, "0") + Mid$(X1$, 2, 1) + X2$
Else
  X2$ = Mid$(X1$, 2, 1) + X2$ + String$(expn - Len(X2$), "0")
End If

If x < 0 Then
  X2$ = "-" + X2$
Else
  X2$ = " " + X2$
End If

UnExp = X2$
End Function


просто развлекся, делать было неча smile 

PM MAIL   Вверх
Jr13san
Дата 31.8.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 29.7.2008
Где: г. Павлово

Репутация: нет
Всего: нет



попробую, что ты написал...
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0656 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.