c++精度问题

c++中对于数值较大的double型数,如1234567890十位以上的数,在进行这种数加减时,程序默认的是以1.23456*10^10这样来算的,书上说的精度设置都是输... c++中对于数值较大的double型数,如1234567890十位以上的数,在进行这种数加减时,程序默认的是以1.23456*10^10这样来算的,书上说的精度设置都是输出时的精度设置,没有程序编译时的精度设置,有没有方法使程序在运行前就设定好精度呢? 展开
 我来答
_whales
2013-05-13 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:505万
展开全部
没有,因为计算机内部浮点数是二进制表示的,必须转换成十进制(BCD,ASCII)表示才可以,使用十进制精度设置。 要想真正控制精度, 除非你自己定义BCD串表示,或者ASCII串表示的十进制数,否则会有表示误差。

当然,你也不必在意表示误差,因为他很小,所以实际计算是可以不必太关心。确实需要关心就用 BCD串表示,或者ASCII串 好了。
不然可以扩展浮点数精度。
帐号已注销
2013-05-13 · TA获得超过380个赞
知道小有建树答主
回答量:618
采纳率:50%
帮助的人:228万
展开全部
不是很明白 你的问题,首先可以告诉你一点,运行时候的精度往往是大于输出时的,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友61311ba
2013-05-13 · TA获得超过882个赞
知道小有建树答主
回答量:1386
采纳率:0%
帮助的人:875万
展开全部
不必要关心这种精度, 仅需要关心最终输出结果 ...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pengguismile
2013-05-13 · TA获得超过687个赞
知道小有建树答主
回答量:332
采纳率:100%
帮助的人:124万
展开全部
你搞混了概念,
1.你可以百度“double类型 在内存中的结构”,你会明白,double在内存中占8个字节,它的格式是IEEE规定了的,就像我们规定桌子叫桌子,你不能叫它板凳,你是无法改变它的。
2.你所说的精度设置,是指他转换成字符串后的一种格式。
举个float的例子,f=123.45678,printf("%.3",f);前一个你无法改变它的格式,后一个只是说输出字符串时保留3位小数,即使你使用scanf(%.3,&f),f在内存中也不可能改变它在内存中的存储格式。
这是两个不同的东西,希望对你有帮助。
附:32位浮点数格式(<计算机硬件基础>1998.7,高教出版社,邹逢兴)
31位:符阶+30~24位:阶码+23位:数符+22~0位:尾数。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式