У меня есть следующий код:
typedef __int64 BIG_INT;
typedef double CUT_TYPE;
#define CUT_IT(amount, percent) (amount * percent)
void main()
{
CUT_TYPE cut_percent = 1;
BIG_INT bintOriginal = 0x1FFFFFFFFFFFFFF;
BIG_INT bintAfter = CUT_IT(bintOriginal, cut_percent);
}
Значение bintAfter после расчета равно 144115188075855872 вместо 144115188075855871 (см. В конце «2» вместо «1» ??).
При меньших значениях, таких как 0xFFFFFFFFFFFFF, я получаю правильный результат.
Как мне заставить его работать в 32-битном приложении? Что я должен принять во внимание?
Моя цель - сократить определенный процент от очень большого числа.
Я использую VC ++ 2008, Vista.