Интересный результат, когда я печатаю вывод - PullRequest
1 голос
/ 13 апреля 2011

Я наблюдаю интересный результат, когда набираю вывод:

Вот фрагмент кода:

int bitSize = (int)log10(1.0*16)/log10(2.0);   //bistsize = 3  it should be 4
int temp = log10(1.0*16)/log10(2.0);           //temp = 4   

По сути, я хочу взять log2 (16), которое должно быть 4.Я думаю, что мое понимание типизации неправильно.Есть предложения?

Спасибо

Ответы [ 2 ]

5 голосов
/ 13 апреля 2011

Попробуйте:

int bitSize = static_cast<int>(log10(1.0*16)/log10(2.0));

Одна из тонкостей новых приведений C ++ заключается в том, что они заключают в скобки аргумент, поэтому ясно, что именно вы используете.

5 голосов
/ 13 апреля 2011

Я думаю, что вы используете только первую функцию log(..). Поставьте круглые скобки вокруг всего выражения:

int bitSize = (int)(log10(1.0*16)/log10(2.0));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...