社区
C++ 语言
帖子详情
float数值可以进行求余运算么??
xychzh
2011-03-09 09:06:05
我想要对一个超过42亿的数值进行求余运算,结果试了一下float类型,居然不让运算。
...全文
1004
16
打赏
收藏
float数值可以进行求余运算么??
我想要对一个超过42亿的数值进行求余运算,结果试了一下float类型,居然不让运算。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
整数除法 有 商几余几
小数除法哪有余数,商还是小数啊
高性能架构探索
2011-03-09
打赏
举报
回复
貌似求余在库里面是double型,试试double
各类
数值
型数据间如何混合
运算
?
整型(包括int,short,long)、实型(包括
float
,double)可以混合
运算
。前已述及,字符型数据可以与整型通用,因此,整型、实型、字符型数据间可以混合
运算
。例如: 10+'a'+1.5-8765.1234 *'b' 是合法的。在
进行
运算
时,不同类型的数据要先转换成同一类型,然后
进行
运算
。转换的规则按图3.10所示。 图3.10 图中横向向左的箭头表示必定的转换,如字符数
关于Python中,int()与
float
()在处理
数值
型字符串时的约束
综合来说:利用input获取的数据对象,是字符串类型的,不能直接
进行
运算
。必须转化成显式的
数值
,才能
进行
后续的加减,比较等
运算
。 其中int(s),如果s是字符串类型的
数值
,那么s必须是整数的
数值
。而
float
(s)并没有这个限制。 eval(s)可以直接讲s的最外层的引号去掉,运行引号里面的内容。也就是如果s是
数值
型字符串,那么经过eval后,s就变成了纯
数值
,可以直接
进行
后续的
运算
。
Java中的浮点数据(
float
、double)
进行
算术
运算
时出错的问题剖析
本文主题: 对浮点数
进行
算术
运算
时,为何
运算
结果不正确? BigDecimal类型、常用方法的讲解。 简单的浮点数算术
运算
工具类的设计。 在Java前面讲解
float
、double两种基本浮点类型时已经指出,这两个基本类型的浮点数容易引起精度丢失。其实,不仅是Java,很多编程语言也存在这个问题。先看如下程序: public class DoubleTest { public sta...
C语言不同数据类型间的混合
运算
+常见数据类型
在程序中经常会遇到不同类型的数据
进行
运算
,若一个
运算
符两侧的数据类型不同,则先自动
进行
类型转换,使两者具有同一类型,然后
进行
运算
,现将规律总结如下: 1. +. -. *. /
运算
的两个数中有一个数为
float
或double型,结果是double型,因为系统将所有
float
型数据都先转换为double型,然后
进行
运算
; 2. 若int型与
float
或double型数据
进行
运算
,先将int型和
float
型转换为double型,然后
进行
运算
,结果为double型; ...
C语言编程之
数值
运算
C语言的数据类型主要有
数值
运算
、字符
运算
。 本节主要对
数值
运算
进行
简单的分析。 1. 数据类型
数值
:int,short ,long,
float
,double; 字符:char; 字符类型数据,可以通过比较其ascii码值来决定其大小。 2. 字符
运算
字符 +
数值
char ch=’a’; ch++; // 字符’a’ 的ascii码值加1,变为’b’的 ascii码 此时,字符变量ch中的字符为’b’; 字符 - 字符 char ch=’8’; int val; val=ch – ’0’; //
C++ 语言
65,206
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章