对于一个double类型的浮点数,怎样不输出后面多余的零?
(试了一下人为控制:
//printf("%lf",ans);
int xsd=0;
while(ans!=floor(ans))
{
ans*=10;
xsd++;
}
ll k=(long long)ans;
int p=0;
while(k)
{
anss[++p]=k%10;
k/=10;
}
p=max(p,xsd+1);
for(int i=p;i>=1;i--)
{
printf("%lld",anss[i]);
if(i-1==xsd) printf(".");
}
失败 大概 0.5 变成了 0.500000001 这样
推测是在十六位有效数字乘以 10 后第 17 位的乱码跑了进来,造成错误。
求助应该怎么办