社区
C++ 语言
帖子详情
float数值可以进行求余运算么??
xychzh
2011-03-09 09:06:05
我想要对一个超过42亿的数值进行求余运算,结果试了一下float类型,居然不让运算。
...全文
991
16
打赏
收藏
float数值可以进行求余运算么??
我想要对一个超过42亿的数值进行求余运算,结果试了一下float类型,居然不让运算。
复制链接
扫一扫
分享
转发到动态
举报
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
打赏
举报
回复
整数除法 有 商几余几
小数除法哪有余数,商还是小数啊
高性能架构探索
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...
7、如何
进行
整数和浮点数的
运算
?
在Python中,
进行
整数和浮点数的
运算
是一项基本而重要的操作,因为它们是两种最常见的数字类型。Python提供了丰富的
运算
符和内建函数,使得整数和浮点数之间的
运算
非常灵活。本文将详细解答如何在Python中
进行
整数和浮点数的
运算
,包括基本
运算
符、类型转换、常见
运算
问题的处理等方面的内容。加法
运算
是将两个
数值
相加,可以用
运算
符实现。对于整数和浮点数而言,加法
运算
是非常直观和常见的。 b. 减法
运算
减法
运算
是将右操作数的值从左操作数中减去,可以用
运算
符实现。 c. 乘法
运算
乘法
运算
是将两个
数值
数值
类型的
运算
方式总结
十进制的小数在
进行
二进制转换时,整数部分会除二取余,小数部分会乘二取整,在乘二取整的过程中,会产生无限循环的情况,所以就出现了精度丢失。例如,Java的HashMap在实现其hash方法时,就使用了右移
运算
符(>>>)。通过异或(^)
运算
和右移(>>)
运算
,我们可以得到一个整数的绝对值。是因为计算机内部是通过二进制形式来保存浮点数的,无法精确的表示十进制的小数,所以会产生精度丢失的问题。类型转换:将一个范围较大的整数类型强制转换为范围较小的整数类型时,如果值超出目标类型的范围,也会发生溢出。
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章