关于用c语言编程的问题
答案:2 悬赏:50 手机版
解决时间 2021-02-10 05:24
- 提问者网友:美人性情
- 2021-02-09 17:58
关于用c语言编程的问题
最佳答案
- 五星知识达人网友:詩光轨車
- 2021-02-09 18:26
#include
//#include
void main()
{
double x=123456789.13,y;
y=(x-(int)x) *100+0.01; //取小数部分,并去除误差
y=(long)y%10;
printf("%g",y);
}追问两个问题,一是为什么有误差,二是为什么%g追答一、因为浮点数在计算机中存储时,都不是精确的数,所以,在强制转换成整数时,有可能会造成数据丢失,如:0.13*100=13.0 但计算机中存储的数据有可能是12.999.。。这样,取整时,会是12!因此,要进行误差修正!
二、%g是自动去除尾部不必要的0追问谢谢啦,我困扰好几天了
//#include
void main()
{
double x=123456789.13,y;
y=(x-(int)x) *100+0.01; //取小数部分,并去除误差
y=(long)y%10;
printf("%g",y);
}追问两个问题,一是为什么有误差,二是为什么%g追答一、因为浮点数在计算机中存储时,都不是精确的数,所以,在强制转换成整数时,有可能会造成数据丢失,如:0.13*100=13.0 但计算机中存储的数据有可能是12.999.。。这样,取整时,会是12!因此,要进行误差修正!
二、%g是自动去除尾部不必要的0追问谢谢啦,我困扰好几天了
全部回答
- 1楼网友:刀戟声无边
- 2021-02-09 19:08
y=(long)y%10; // y已经被取整,然后再求除以10的余数,这个数应该是9,哪来的第二位小数
y=(long)(100 * y)%10; // 这可以显示原来的第二位小数3追问我写了y=x*100
y=(long)(100 * y)%10; // 这可以显示原来的第二位小数3追问我写了y=x*100
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯