社区
C++ 语言
帖子详情
怎样解决浮点数的精度问题呢?
烂笔头Danky
2005-03-29 07:32:02
一个浮点数在内存里存储时存在精度的问题,超过允许的精度都不能保存下来,就如:3.1415926这个浮点数用一个long double的类型来保存,在输出时也却只能输出3.14159,请问有什么办法可以解决这样的精度问题吗?
...全文
298
10
打赏
收藏
怎样解决浮点数的精度问题呢?
一个浮点数在内存里存储时存在精度的问题,超过允许的精度都不能保存下来,就如:3.1415926这个浮点数用一个long double的类型来保存,在输出时也却只能输出3.14159,请问有什么办法可以解决这样的精度问题吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rocklabzhang
2005-03-30
打赏
举报
回复
可以转化成字符串再运算
不过这样要专门写个类处理
烂笔头Danky
2005-03-30
打赏
举报
回复
请帮忙看看这段程序,我的程序是试图把0.1415926这样的小数转换成1415926这样的整数,当fValue=3.1415926时程序可以正常工作,但当fValue=0.1415926时就进入了死循环变得不正常了,请问这是什么原因,应该怎样解决呢?
long double fValue = 0.1415926;
while ( (fValue-(long)fValue) != 0.0 )
{
fValue *= 10;
cout <<"fValue:" <<fValue <<endl;
cout <<"(long)fValue:" <<(long)fValue <<endl;
cout <<"fValue-(long)fValue:" <<fValue-(long)fValue <<endl <<endl;
}
hjf8086
2005-03-30
打赏
举报
回复
cout<<setiosflags(ios::fixed)<<setprecision(7)
fixed是固定浮点数
setprecision(7)小数点后7位显示
pcboyxhy
2005-03-30
打赏
举报
回复
最彻底的方法就是写一个高精度类
烂笔头Danky
2005-03-29
打赏
举报
回复
那它们各自是什么意思啊?
xtutzh
2005-03-29
打赏
举报
回复
cout<<fixed<<showpoint<<setprecision(7)
请可以说一下这里面的是什么意思吗,我估计这个(7)是用来指明输出的位数吧,这个fixed曾经见过,在印象中好像是用来控制输出的位数,但这个showpoint和setprecision是关键字吗?还是变量名呢?
它们不是关键字,而是 iostream的成员函数。注意:cout是内置的iostraam类的一个对象。
烂笔头Danky
2005-03-29
打赏
举报
回复
cout<<fixed<<showpoint<<setprecision(7)
请可以说一下这里面的是什么意思吗,我估计这个(7)是用来指明输出的位数吧,这个fixed曾经见过,在印象中好像是用来控制输出的位数,但这个showpoint和setprecision是关键字吗?还是变量名呢?请指教!
arrowcy
2005-03-29
打赏
举报
回复
如果使用c++的标准输入输出的话,就按照 JYcom(天神的眼泪) 说的做就行了
如果用C函数printf,就用那个%?.?f格式就可以了
arrowcy
2005-03-29
打赏
举报
回复
你说那个问题不是存储的精度问题,而是输出精度的问题
用cout输出默认就是6位有效数字
JYcom
2005-03-29
打赏
举报
回复
包含头文件:#include<iomanip>
然后在输出时cout<<fixed<<showpoint<<setprecision(7)即可。
浮点数
精度
问题
解答——
浮点数
目前支持二进制
浮点数
的硬件和软件文档中,几乎都声称其
浮点数
实现符合IEEE 754标准。那么,什么是IEEE 754标准? 最权威的解释是IEEE754标准本身ANSI/IEEE Std 754-1985《IEEE Standard for Binary Floating-Point Arithmetic》,网上有PDF格式的文件,Google一下,下载即可。标准文本是英文的,总共才23页,有耐心的话可以仔细阅读。这里摘录前言中的一句: This standard defines a family of commercially feasible ways for new systems to perform binary floating-point arithmetic。 其实是句废话,什么也没说。 IEEE 754标准的主要起草者是加州大学伯克利分校数学系教授William Kahan,他帮助Intel公司设计了8087浮点处理器(FPU),并以此为基础形成了IEEE 754标准,Kahan教授也因此获得了1987年的图灵奖。赞一句:IEEE 754浮点格式确实是天才的设计。Kahan教授的主页:http://www.cs.berkeley.edu/~wkahan/。 看看其它文献怎么说。
关于
浮点数
的
精度
问题
关于
浮点数
的
精度
问题
,对于了解和学习C语言有一定帮助
解决
C语言
浮点数
精度
问题
[代码]
本文探讨了C语言中
浮点数
精度
丢失的
问题
及其
解决
方案。通过实例代码展示了
浮点数
在循环累加时误差逐渐增大的现象,并提出了多种
解决
方法:将
浮点数
转换为整数运算以提高
精度
、使用double类型替代float、利用宏定义EPS进行误差比较、以及通过字符串转换确保跨语言传输
精度
。此外,文章还介绍了Java中BigDecimal类型的高
精度
计算优势,并提醒注意
浮点数
比较、除零检查和特殊值处理等细节。最后,针对C与Java间的数据交互,提供了保留
精度
的转换方法。
Python
浮点数
精度
问题
[源码]
本文详细探讨了Python中
浮点数
精度
丢失的
问题
,例如0.1 + 0.2不等于0.3的现象。文章首先解释了计算机使用二进制表示
浮点数
的基本原理,指出由于内存限制,某些十进制小数无法精确转换为二进制,导致
精度
丢失。接着,文章介绍了
浮点数
转二进制的具体计算方法,并通过示例展示了0.1和0.2在二进制中的无限循环表示。为
解决
这一
问题
,文章推荐使用Python的decimal模块进行高
精度
计算,并对比了round函数的局限性,指出其无法根本
解决
浮点数
的内在不精确性。最后,文章总结了在需要高
精度
计算的场景下应优先使用decimal模块,以避免
浮点数
运算带来的误差。
JS
浮点数
精度
问题
[代码]
文章详细介绍了JavaScript中
浮点数
精度
丢失的
问题
及其原因,主要由于Number类型遵循IEEE 754标准,使用64位双
精度
浮点数
表示,导致进制转换时出现误差。为
解决
这一
问题
,文章提出了两种方法:一是通过整数运算后再转回小数,但此方法并非万能;二是使用第三方库bignumber.js,详细介绍了其安装、导入及使用方法,包括基本运算、保留小数位数、四舍五入、比较大小等操作。bignumber.js能有效
解决
精度
问题
,支持高度自定义计算,具有广泛应用价值。
C++ 语言
65,208
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章