printf("%05.3f",a);正常的时候输出是1.755,但是有时它会变成1.75499990000000000000000000000000,?? 20
3个回答
展开全部
由于你指定该数据输出占用5位字符(包括小数点),一旦该数据输出占用超过5位时,则就不按照你自己的格式输出了。另外由于浮点运算有精度误差,运算结果极有可能出现上述结果。
建议:int x; a*=1000; a+=0.5; x=a; a=(float)x/1000; 这样保证数据小数点后有效数字3位,只是x有溢出的可能(无法正确保存a*1000+0.5的整数部分),必要时可改成long x;定义。
double型的a在打印语句中应该使用的格式字符串为"%05.3lf"才对。
建议:int x; a*=1000; a+=0.5; x=a; a=(float)x/1000; 这样保证数据小数点后有效数字3位,只是x有溢出的可能(无法正确保存a*1000+0.5的整数部分),必要时可改成long x;定义。
double型的a在打印语句中应该使用的格式字符串为"%05.3lf"才对。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那说明变量a有时的值就是1.7549。
可以将其强制设为1.755试验下结果。
可以将其强制设为1.755试验下结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
root@E06:~$ printf '%0100.5f\n' 33
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033.00000
root@E06:~$ printf '%05.5f\n' 33
33.00000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033.00000
root@E06:~$ printf '%05.5f\n' 33
33.00000
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询