Что нового

3.386e-5 формат

D

dreamorder

Гость
Доброго времени суток гос-да программисты.
Снова обращаюсь за помощью.
Покажите пожалуйста как перевести число из 3.386e-5 (Экспоненциальный формат) в нормальный, понятный простому человеку 0.00003386 ?
В этой функции получаемые цифры отображаются в десятичном виде, хотя на сервере откуда они берутся, при очень малых числах стоят знаки к примеру 3.386e-5 а функция выводит 3.386, хотя надо что бы было 0.00003386, но опять же,
числа всегда меняются и надо что бы всегда вывод в окно GUI был в нормальном, человеческом виде.

Код:
Func аcoin()
	Local $pData
	Local $monyy
	$pData=BinaryToString(InetRead('https://.............', 1), 4) ;получаем текст
  	$x1 = StringRegExp($pData, '(\d+\.\d+)', 3) ; ищем текст в HTML
   If IsArray($x1) Then  ; если нашли то >>
   ; _ArrayDisplay($x1)
	$monyy = $x1[0]
	$mony = Round($monyy, 10)
    GUICtrlSetData($label1,$mony) ; изменяем в label текст на найденый текст
   Else
  Sleep(10)
EndIf
EndFunc


Пожалуйста помогите с примером, как это устроить можно.
Заранее спасибо все кто откликнется.
:blink:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
$v = 3.386e-005
$s = StringRegExpReplace(StringRegExpReplace(StringFormat('%.15f', $v), '0+$', ''), '\.$', '')
ConsoleWrite($s & @CR)


Рег. выражения, думаю, можно упростить до одного вызова функции.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Round превращает текст в число. Нужно от него избавиться. Можно просто обрезать, если не обязательно округлять.
Код:
#include <BigNum.au3>
$monyy = '0.00000000453645656435636456658796797'
MsgBox(0, 'Сообщение', _BigNum_Div($monyy, '1', 10))


ещё
Код:
Func аcoin()
	Local $x1 = StringRegExp(BinaryToString(InetRead('https://.............', 1), 4), '(\d+)\.(\d+)', 1)
	If Not @error Then ; если нашли то >>
		; _ArrayDisplay($x1)
		GUICtrlSetData($label1, $x1[0] & '.' & StringLeft($x1[1], 10))
	Else
		Sleep(10)
	EndIf
EndFunc
 
Верх