JavaScript большое целое квадратный корень - PullRequest
0 голосов
/ 08 декабря 2018

Это касается нового типа JavaScript BigInt, который поддерживается в Chrome и Node v10.4

Обе следующие строки выдают ошибку:

Math.sqrt(9n)
Math.sqrt(BigInt(9))

Ошибка:

Не удается преобразовать значение BigInt в число

Как получить квадратный корень из BigInt в JavaScript?TIA

1 Ответ

0 голосов
/ 08 декабря 2018

Отсюда: https://golb.hplar.ch/2018/09/javascript-bigint.html

function sqrt(value) {
    if (value < 0n) {
        throw 'square root of negative numbers is not supported'
    }

    if (value < 2n) {
        return value;
    }

    function newtonIteration(n, x0) {
        const x1 = ((n / x0) + x0) >> 1n;
        if (x0 === x1 || x0 === (x1 - 1n)) {
            return x0;
        }
        return newtonIteration(n, x1);
    }

    return newtonIteration(value, 1n);
}

sqrt(BigInt(9))
...