Я сделал простой пример для подсчета десятичных знаков, но он не останавливается и не дает мне правильного ответа, вот мой код:
double b=76327741.125;
int count=0;
while(b - (int)b > 0.0)
{
b*=10;
count++;
}
cout<<count;
ответ должен быть:
3
но вместо этого цикл while продолжает работать бесконечно ... что не так с моим кодом?
double
все, что вам нужно сделать, это изменить константы (мантисса 23 -> 52, экспонента 8 -> 11), ширину переменных (uint32_t
->uint64_t
) и__builtin_ctz()
->__builtin_ctzll()
... Если вы используете MSVC вы можете использовать#include <intrin.h>
, затем_BitScanForward(&umanctz, value)
. - person Iwillnotexist Idonotexist   schedule 15.09.2014