Что нового

[Математика] Как отобразить достаточно большое число

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Есть алгоритм
Код:
Func SqrtAlg($n)
    Local $x = $n, $y = Floor(($n+1)/2)
    While 1
        If $x <= $y Then
            Return $x
        Else
            $x = $y
            $y = Floor(($x^2+$n)/(2*$x))
        EndIf
	ConsoleWrite("Result	x: "&$x&"     y:"&$y&@cr)
    WEnd
EndFunc

Он считает корень из числа. Если например ему скормить 9, он вернет 3, скормить 100 он вернет 10, скормить 49 он вернет 7. В процессах тестирования, отправляя алгоритму число в виде x^2 и ожидая на выходе увидеть x, я столкнулся с такой вот формулировкой: 1,23456789123457е+015, такой результат я получил отправив в функцию следующее число: 1234567891234567^2. Результат возведения в степень оказался слишком длинным для того, чтобы программа его отобразила и в результате я увидел не искомое 1234567891234567 и сокращенное компьютером число.
В этой связи возникают два вопроса: Как отобразить такое число на мониторе, и как это число считает компьютер? Когда он его округляет и тд и тп.


Добавлено:
Сообщение автоматически объединено:

Я так понимаю то ограничение на которое наткнулся я это:
Number range (floating point): 1.7E–308 to 1.7E+308 with 15-digit precision
Кто мне сможет это корректно расшифровать? :smile:
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Belfigor

Может, это поможет?
BigNum UDF - библиотека для работы с большими числами
http://www.autoitscript.com/forum/topic/83529-bignum-udf/

Код:
#include <BigNum.au3>

$X = '1234567891234567'
$Y = '1234567891234567'
MsgBox(0, '',_BigNum_SQRT(_BigNum_Mul($X, $Y)))
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Спасибо, опробую.
P.S. допилил алгоритм, иногда он уходил в бесконечный цикл.


Добавлено:
Сообщение автоматически объединено:

WSWR
Библиотека просто шикарнейшая. Спасибо, пока как запасной вариант подойдет на ура :smile:
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
И она уже год как в справке...
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
AZJIO
у меня старая английская версия :smile:
 
Верх