double类型可以表达到负2的1023次方到2的1023次方,都已经足够数这宇宙有多少颗原子了,还有多大的数表达不出来?
如果数字真的有点大的话可以用一种降阶的方法计算。具体是做一个double类的表,记录2008的10倍,100倍,1000倍……这样,对你那个数作减法运算(这样不影响模的值)直到那个double的值可以使用int容纳得下,然后转为int,再取模,就行了。
如果数字实在是太大的话那我就没办法了。尽管double可以表达的范围很大但是要受精度影响。你那个太大的数是无法精确存放的,自然也就无法精确计算
取模运算其两端的操作数都应该是整型数据,这样做不行,这个看你的数多大了,而且不一定存储得了,如果是整型数据的话,那么他是有范围的,太大了,存储不了,如果通过特定的方式处理了之后,存储之后,那么就看情况了。
取模只有整型变量间才可以,双精度的是不可以的。
不知道你这个数有多大,建议你用 unsigned long 型试试,(2^32)
如果太大 建议你使用数组
具体算法是
以字符串接收数,然后计算这个字符串的值并对2008求模
#include
int main()
{
char a[100]={'\0'};
int b=0;
cout<<"请输入要求模得数:"<
cout<
{
b=b*10+a[i]-'0';
b=b%2008;
}
cout< return 0;
}