Как привести число к стандартному виду?

 

Все со школы помнят стандартный вид числа, например:  3.02156e13 или 3.02156e-13

void OnStart()
  {
   double A=3.02156e13;   
   Print("A=",A);
   
   double B=3.02156e-13;   
   Print("B=",B);
  }

A=30215600000000

B=3.02156e-013

Так вопрос в том как получить мантису вот в таком виде 3.02156 и как получить точность мантисы 13 или -13 имея значение double?

 

попробуйте в своих экспериментах прибавить или отнять 0.000000000000000000001

хотя эти тонкости - вывод в принт мантисы обычно в языках высокого уровня решались форматированием вывода, на Делфи исходники открыты - можно посмотреть 

Документация по MQL5: Общие функции / PrintFormat
Документация по MQL5: Общие функции / PrintFormat
  • www.mql5.com
Общие функции / PrintFormat - Документация по MQL5
 

В общем вот что получилось, кому интересно покопайте может сможете ускорить.

ЗЫ вообще то файлик называется Стандартный вид числа.


Файлы:
 
Urain:

....

ЗЫ вообще то файлик называется Стандартный вид числа.

Говорю же, завязывай с кирилицей. :)
 
joo:
Говорю же, завязывай с кирилицей. :)
А люблю я её. Вот только жаль в МЕ функцию по русски назовёшь так контекстное меню нифига её не видит.
 
Urain:

Все со школы помнят стандартный вид числа, например:  3.02156e13 или 3.02156e-13

A=30215600000000

B=3.02156e-013

Так вопрос в том как получить мантису вот в таком виде 3.02156 и как получить точность мантисы 13 или -13 имея значение double?

IgorM:

попробуйте в своих экспериментах прибавить или отнять 0.000000000000000000001

хотя эти тонкости - вывод в принт мантисы обычно в языках высокого уровня решались форматированием вывода, на Делфи исходники открыты - можно посмотреть


Присоединяюсь к предыдущему оратору. Для твоего случая пример вот:


void OnStart()
  {
   double A=3.02156e13;   
   printf("A = %e",A);
   
   double B=3.02156e-13;   
   printf("B = %e",B);
  }  

2010.11.03 21:04:36    FormatOutTest (USDJPY,M1)    B = 3.021560e-013

2010.11.03 21:04:36    FormatOutTest (USDJPY,M1)    A = 3.021560e+013

Файлы:
 
MetaDriver:


Присоединяюсь к предыдущему оратору. Для твоего случая пример вот:


2010.11.03 21:04:36    FormatOutTest (USDJPY,M1)    B = 3.021560e-013

2010.11.03 21:04:36    FormatOutTest (USDJPY,M1)    A = 3.021560e+013

Приветствую на пятом форум.

Вот как раз как получить цифирки -013 и +013 ну и собственно мантису 3.021560.

Не посмотреть в принте, а именно получить для оперирования?

 
Urain:

Приветствую на пятом форум.

Вот как раз как получить цифирки -013 и +013 ну и собственно мантису 3.021560.

Не посмотреть в принте, а именно получить для оперирования?

Не очень понял.  Но если нужна строковое представление внутри программы (для текстовых манипуляций), то есть аналог для форматирования в строку:

string  StringFormat(
   string  format,     // строка с описанием формата
   ...     ...         // параметры
   );
 
MetaDriver:

Не очень понял.  Но если нужна строковое представление внутри программы (для текстовых манипуляций), то есть аналог для форматирования в строку:

Нет нужен ранг мантисы ну и саму мантису тоже можно хотя имея в распоряжении значение и ранг получить мантису как два байта переслать,

в общем я уже решил задачку (в прикреплённом файлике выше) остаётся поколдовать насчёт ускорения если выйдет.

 
Urain:

Нет нужен ранг мантисы ну и саму мантису тоже можно хотя имея в распоряжении значение и ранг получить мантису как два байта переслать,

в общем я уже решил задачку (в прикреплённом файлике выше) остаётся поколдовать насчёт ускорения если выйдет.

Езвращениц.

;)

 
MetaDriver:

Езвращениц.

;)

Я ещё и на трамзисторе играть могу(с) :о)