关于小数取整问题#include main(double x,int d){double sum2,sum3,temp;

问题描述:

关于小数取整问题
#include
main(double x,int d)
{double sum2,sum3,temp;
int s1;
double s2,n1=1.0;
double n2=2.0;int sum1;
x=111.1;
d=1;
temp=x;
sum1=int (x);
sum2=temp-(double)sum1;
sum3=0.0;cout
1个回答 分类:综合 2014-09-25

问题解答:

我来补答
111
sum2 1 0.1
sum21
s2 0
看清楚了,是0.99999999999994316
不是1,精度问题,计算机认为0.99999999999994316与1是没有差别的.
所以显示的时候显示了1
之所以会这样是因为计算机对数学计算中长的数是会截断的.
如数学上是
1/3 = 0.333333333333.
3*0.333333333333...= 0.99999999999.= 1
而计算机里面计算是
1/3 =0.333333333333
3*0.333333333333 = 0.99999999999 != 1 //截断了
但显示程序设计上会认为0.99999999999是等于1的,因为这样友善些.
那怎么才能解决这个问题呢,这个小程序是一个二进制的数转化为十进制的数
while(sum2 > 0.00000002){ // 之前这里写错了,现在应该行了
sum2 += 0.00000001; //这里加一行就可以解决了.
sum2=sum2*10.0;
cout
 
 
展开全文阅读
剩余:2000
上一页:这一步看不懂
下一页:这题详细解释