float数值可以进行求余运算么??

xychzh 2011-03-09 09:06:05
我想要对一个超过42亿的数值进行求余运算,结果试了一下float类型,居然不让运算。
...全文
991 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
辰岡墨竹 2011-03-09
  • 打赏
  • 举报
回复
这个必须用BigInteger之类的大整数库,double是保存小数用的,而且精度不超过科学计数法十三位小数,你哪128位以上的部分早截掉了。自己用数组,比如大数分割为32位二进制数的段,利用嵌入汇编处理好进位,求余应该最快。
赵4老师 2011-03-09
  • 打赏
  • 举报
回复
大数循环减除数
showjim 2011-03-09
  • 打赏
  • 举报
回复
找个大数运算库吧
xychzh 2011-03-09
  • 打赏
  • 举报
回复
我要存储的一个数值最小都128位,最大都有1024位甚至更高。
看来,得想其他办法存储了。
xychzh 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 iicup 的回复:]
float不能精确保存大于42亿的数字,用double或者longlong吧.
[/Quote]

恩,的确没想到long long这个类型,的确可以。
但是我现在发现,long long也远远不能达到我的需求,我算的数是255的e次方,这个e可能是成千上万。

我在写RSA加密解密算法,现在的问题就是由大素数产生的高精度数据存储问题。
cuidx 2011-03-09
  • 打赏
  • 举报
回复
用float可能会有精度的问题,同意楼上用long long类型
cuidx 2011-03-09
  • 打赏
  • 举报
回复
不好意思,是我理解错了...
双杯献酒 2011-03-09
  • 打赏
  • 举报
回复
float不能精确保存大于42亿的数字,用double或者longlong吧.
双杯献酒 2011-03-09
  • 打赏
  • 举报
回复
double fmod(
double x,
double y
);

float fmod(
float x,
float y
); // C++ only

long double fmod(
long double x,
long double y
); // C++ only

float fmodf(
float x,
float y
);

witwolf 2011-03-09
  • 打赏
  • 举报
回复
long long试一下
xychzh 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 namelij 的回复:]
貌似求余在库里面是double型,试试double
[/Quote]

哪个库?
xychzh 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cuidx 的回复:]
整数除法 有 商几余几
小数除法哪有余数,商还是小数啊
[/Quote]

单精度不一定就是小数。
10000000000000000000000000000000.0f 这就是一个整数
sxqinge 2011-03-09
  • 打赏
  • 举报
回复
将数据拆分下计算试试?
waxilo1988 2011-03-09
  • 打赏
  • 举报
回复
貌似 真的 不可以! 新手 求解释, 等围观
cuidx 2011-03-09
  • 打赏
  • 举报
回复
整数除法 有 商几余几
小数除法哪有余数,商还是小数啊
  • 打赏
  • 举报
回复
貌似求余在库里面是double型,试试double

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧