我有以下代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
bintAfter计算后的值是144115188075855872而不是144115188075855871(最后见"2",而不是"1"??).
在较小的值,如0xFFFFFFFFFFFFF,我得到正确的结果.
如何在32位应用程序上运行它?我需要考虑什么?
我的目标是削减一个非常大的数字的一定比例.
我使用VC++ 2008,Vista.