社区
C++ 语言
帖子详情
怎样解决浮点数的精度问题呢?
烂笔头Danky
2005-03-29 07:32:02
一个浮点数在内存里存储时存在精度的问题,超过允许的精度都不能保存下来,就如:3.1415926这个浮点数用一个long double的类型来保存,在输出时也却只能输出3.14159,请问有什么办法可以解决这样的精度问题吗?
...全文
327
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)即可。
JS
浮点数
精度
问题
及
解决
方案
因为
浮点数
的计算存在round-off
问题
,也就是
浮点数
不能够进行精确的计算。并且: 不仅JavaScript,所有遵循IEEE 754规范的语言都是如此; 在JavaScript中,所有的Number都是以64-bit的双
精度
浮点数
存储的; 双
精度
的
浮点数
在这64位上划分为3段,而这3段也就确定了一个
浮点数
的值,64bit的划分是“1-11-52”的模式,具体来说: 就是1位最高位(最左边那一位)表示符号位,0表示正,1表示负; 11位表示指数部分; 52
【Python】
浮点数
精度
问题
(包含
解决
方案)
浮点数
精度
问题
概述
解决
方案 概述 之前提到过,Python 中浮点类型之间的运算,其结果并不像我们想象的那样,例如: >>> 0.1+0.2 0.30000000000000004 >>> 0.1+0.1-0.2 0.0 >>> 0.1+0.1+0.1-0.3 5.551115123125783e-17 >>> 0.1+0.1+0.1-0.2 0.10000000000000003 为什么在计算这么简单的
问题
上,计算机会出现这样
JS的
浮点数
计算
精度
丢失
问题
解决
方案
近期在做项目的时候,遇到了一些JS
浮点数
精度
的
问题
。这个
问题
,其实说大不大,说小不小。但是这次因为涉及到一些财务和结算的
问题
,然后突然发现这个小
问题
处理起来还是挺麻烦的。这里把相关的原因的
问题
的
解决
方案整理一下,也希望给各位提供一些参考。
java
浮点数
精度
问题
及
解决
方案
Java浮点型
精度
问题
源于二进制存储机制导致十进制小数无法精确表示,常见于0.1+0.2≠0.3等场景。
解决
方案包括:1)使用BigDecimal构造时优先采用String参数避免误差;2)浮点比较需设定误差范围;3)金融计算可转为整数运算;4)利用第三方数学库。核心原则是:精确计算场景禁用float/double,合理选择工具并控制运算过程。通过BigDecimal的精确构造、舍入控制及格式化输出,可以有效
解决
工程中的
精度
痛点。
浮点数
运算
精度
问题
分析与
解决
方案
最近在项目中遇到
精度
计算
问题
,用Double类型的数据减去Double类型的数据,得出的结果在预期之外,经过一番思考与学习,最后找到
解决
问题
的方案。 一、
浮点数
运算导致
精度
问题
现象 代码如下: Double num1 = 2.1; Double num2 = 2.0; System.out.println(num1 - num2); 用人类的口算可以知道,结果是0.1。可是...
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章