Корень куба очень большого числа с использованием только математической библиотеки

var nameList = [
{name:'x', age:20, email:'x@email.com'},
{name:'y', age:60, email:'y@email.com'},
{name:'Joe', age:22, email:'joe@email.com'},
{name:'Abc', age:40, email:'abc@email.com'}
];

var filteredValue = nameList.filter(function (item) {
      return item.name == "Joe" && item.age < 30;
});

//To See Output Result as Array
alert(JSON.stringify(filteredValue));

Вы можете просто использовать javascript:)

1
задан GMX Rider 30 March 2019 в 22:42
поделиться

1 ответ

Ваша проблема в том, что вы не придерживаетесь строго целых чисел. Целые числа Python имеют динамический размер, поэтому они могут соответствовать любому размеру значения, которое вы хотите, без потери точности. Но числа с плавающей точкой имеют изначально ограниченную точность.

Когда вы делаете low = high/2, вы получаете вычисление с плавающей запятой, даже если вы этого не планируете. Поскольку low - это число с плавающей точкой, mid тоже оказывается единым целым, и когда вы проверяете куб mid, число с плавающей точкой оказывается переполненным, и вы получаете исключение.

Если вы измените первое вычисление low на использование // вместо /, вы будете придерживаться целых чисел на протяжении всего вычисления и не получите исключения переполнения. С этим единственным изменением я смог запустить ваш код и получить ожидаемый результат:

>>> find_invpow(num, 3)
408280486712458018941011423246208684000839238529670746836313590220206147266723174123590947072617862777039701335841276608156219318663582175921048087813907313165314488199897222817084206
0
ответ дан Wai Ha Lee 30 March 2019 в 22:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: