c++精度问题
c++中对于数值较大的double型数,如1234567890十位以上的数,在进行这种数加减时,程序默认的是以1.23456*10^10这样来算的,书上说的精度设置都是输...
c++中对于数值较大的double型数,如1234567890十位以上的数,在进行这种数加减时,程序默认的是以1.23456*10^10这样来算的,书上说的精度设置都是输出时的精度设置,没有程序编译时的精度设置,有没有方法使程序在运行前就设定好精度呢?
展开
4个回答
展开全部
不是很明白 你的问题,首先可以告诉你一点,运行时候的精度往往是大于输出时的,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不必要关心这种精度, 仅需要关心最终输出结果 ...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你搞混了概念,
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位:尾数。
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位:尾数。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询