бревно 2 и нан - PullRequest
       1

бревно 2 и нан

3 голосов
/ 27 февраля 2012

Я использую приведенный ниже код для расчета лог-базы 2.

Math.log(x)/Math.log(2);

С помощью этой функции я получаю nan, если x = 4 / 5.

С помощью calc, превзойти эту проблему donне существует.

Как избежать получения НАН и получения реальной стоимости?

Ответы [ 2 ]

8 голосов
/ 27 февраля 2012

У меня сильное чувство, что ваш 4/5 - целые числа. Что означало бы, что 4/5 будет оцениваться до 0 из-за целочисленного деления.

log(0) - это отрицательная бесконечность, которая может быть источником вашего NaN.

Чтобы это исправить, приведите ваши числа к плавающей точке, прежде чем делать деление:

double x = (double)4 / 5;
6 голосов
/ 27 февраля 2012

Я подозреваю, что ваша проблема в том, что 4 / 5 равно 0, потому что оно выполняет деление с использованием целочисленной арифметики. Если вы хотите использовать арифметику с плавающей запятой для получения 0.8, то вам следует попробовать 4.0 / 5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...