问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用c语言将一个实数内部精度四舍五入到小数点后第二位

发布网友 发布时间:2022-04-29 17:39

我来回答

3个回答

热心网友 时间:2023-10-24 21:07

#include <stdio.h>
int p10(int m);//求10的次方
double rounding(double n,int w);//小数四舍五入,参数w:精确到第几数
int main()
{
    int w;
    double n;
    while(1)
    {
        printf("请输入一个实数:");
        scanf("%lf",&n);
        printf("请输入要精确到小数点后几位:");
        scanf("%d",&w);
        n=rounding(n,w);
        printf("四舍五入后的数值为:%.*lf\n\n",w,n);
    }
    return 0;
}
double rounding(double n,int w)//小数四舍五入,参数w:精确到第几数
{
    int z,p=p10(w+1);
    double d;
    d=n-(int)n;
    d+=1.0/p10(11);//避免精度丢失
    d*=p;
    d=(int)d;
    z=(int)d%10;
    if(z>=5)
        d=((d+10)-z)/p+(int)n;
    else
        d=(d-z)/p+(int)n;
    return d;
}
int p10(int m)//求10的次方
{
    int i,sum=1;
    for(i=0;i<m;i++)
        sum*=10;
    return sum;
}

热心网友 时间:2023-10-24 21:07

利用取整截断小数部分的特性来实现:

float x=3.1415,y; int a;
y=x*100+0.5; a=y; y=a; y/=100; //至此,y中存储的数为x的保留2位小数的结果

热心网友 时间:2023-10-24 21:08

正数 x 四舍五入的技巧:
x --> (int)(x+0.5)
当 x=n+r, 0<=r<1,
若 0<=r<0.5, 则r+0.5<1, (int)(x+0.5)=(int)(n+r+0.5)=n
若 0.5<=r<1, 则1<= r+0.5, (int)(x+0.5)=(int)(n+r+0.5)=n+1

热心网友 时间:2023-10-24 21:07

#include <stdio.h>
int p10(int m);//求10的次方
double rounding(double n,int w);//小数四舍五入,参数w:精确到第几数
int main()
{
    int w;
    double n;
    while(1)
    {
        printf("请输入一个实数:");
        scanf("%lf",&n);
        printf("请输入要精确到小数点后几位:");
        scanf("%d",&w);
        n=rounding(n,w);
        printf("四舍五入后的数值为:%.*lf\n\n",w,n);
    }
    return 0;
}
double rounding(double n,int w)//小数四舍五入,参数w:精确到第几数
{
    int z,p=p10(w+1);
    double d;
    d=n-(int)n;
    d+=1.0/p10(11);//避免精度丢失
    d*=p;
    d=(int)d;
    z=(int)d%10;
    if(z>=5)
        d=((d+10)-z)/p+(int)n;
    else
        d=(d-z)/p+(int)n;
    return d;
}
int p10(int m)//求10的次方
{
    int i,sum=1;
    for(i=0;i<m;i++)
        sum*=10;
    return sum;
}

热心网友 时间:2023-10-24 21:07

#include <stdio.h>
int p10(int m);//求10的次方
double rounding(double n,int w);//小数四舍五入,参数w:精确到第几数
int main()
{
    int w;
    double n;
    while(1)
    {
        printf("请输入一个实数:");
        scanf("%lf",&n);
        printf("请输入要精确到小数点后几位:");
        scanf("%d",&w);
        n=rounding(n,w);
        printf("四舍五入后的数值为:%.*lf\n\n",w,n);
    }
    return 0;
}
double rounding(double n,int w)//小数四舍五入,参数w:精确到第几数
{
    int z,p=p10(w+1);
    double d;
    d=n-(int)n;
    d+=1.0/p10(11);//避免精度丢失
    d*=p;
    d=(int)d;
    z=(int)d%10;
    if(z>=5)
        d=((d+10)-z)/p+(int)n;
    else
        d=(d-z)/p+(int)n;
    return d;
}
int p10(int m)//求10的次方
{
    int i,sum=1;
    for(i=0;i<m;i++)
        sum*=10;
    return sum;
}

热心网友 时间:2023-10-24 21:08

利用取整截断小数部分的特性来实现:

float x=3.1415,y; int a;
y=x*100+0.5; a=y; y=a; y/=100; //至此,y中存储的数为x的保留2位小数的结果

热心网友 时间:2023-10-24 21:07

#include <stdio.h>
int p10(int m);//求10的次方
double rounding(double n,int w);//小数四舍五入,参数w:精确到第几数
int main()
{
    int w;
    double n;
    while(1)
    {
        printf("请输入一个实数:");
        scanf("%lf",&n);
        printf("请输入要精确到小数点后几位:");
        scanf("%d",&w);
        n=rounding(n,w);
        printf("四舍五入后的数值为:%.*lf\n\n",w,n);
    }
    return 0;
}
double rounding(double n,int w)//小数四舍五入,参数w:精确到第几数
{
    int z,p=p10(w+1);
    double d;
    d=n-(int)n;
    d+=1.0/p10(11);//避免精度丢失
    d*=p;
    d=(int)d;
    z=(int)d%10;
    if(z>=5)
        d=((d+10)-z)/p+(int)n;
    else
        d=(d-z)/p+(int)n;
    return d;
}
int p10(int m)//求10的次方
{
    int i,sum=1;
    for(i=0;i<m;i++)
        sum*=10;
    return sum;
}

热心网友 时间:2023-10-24 21:08

正数 x 四舍五入的技巧:
x --> (int)(x+0.5)
当 x=n+r, 0<=r<1,
若 0<=r<0.5, 则r+0.5<1, (int)(x+0.5)=(int)(n+r+0.5)=n
若 0.5<=r<1, 则1<= r+0.5, (int)(x+0.5)=(int)(n+r+0.5)=n+1

热心网友 时间:2023-10-24 21:08

利用取整截断小数部分的特性来实现:

float x=3.1415,y; int a;
y=x*100+0.5; a=y; y=a; y/=100; //至此,y中存储的数为x的保留2位小数的结果

热心网友 时间:2023-10-24 21:07

#include <stdio.h>
int p10(int m);//求10的次方
double rounding(double n,int w);//小数四舍五入,参数w:精确到第几数
int main()
{
    int w;
    double n;
    while(1)
    {
        printf("请输入一个实数:");
        scanf("%lf",&n);
        printf("请输入要精确到小数点后几位:");
        scanf("%d",&w);
        n=rounding(n,w);
        printf("四舍五入后的数值为:%.*lf\n\n",w,n);
    }
    return 0;
}
double rounding(double n,int w)//小数四舍五入,参数w:精确到第几数
{
    int z,p=p10(w+1);
    double d;
    d=n-(int)n;
    d+=1.0/p10(11);//避免精度丢失
    d*=p;
    d=(int)d;
    z=(int)d%10;
    if(z>=5)
        d=((d+10)-z)/p+(int)n;
    else
        d=(d-z)/p+(int)n;
    return d;
}
int p10(int m)//求10的次方
{
    int i,sum=1;
    for(i=0;i<m;i++)
        sum*=10;
    return sum;
}

热心网友 时间:2023-10-24 21:08

利用取整截断小数部分的特性来实现:

float x=3.1415,y; int a;
y=x*100+0.5; a=y; y=a; y/=100; //至此,y中存储的数为x的保留2位小数的结果

热心网友 时间:2023-10-24 21:08

正数 x 四舍五入的技巧:
x --> (int)(x+0.5)
当 x=n+r, 0<=r<1,
若 0<=r<0.5, 则r+0.5<1, (int)(x+0.5)=(int)(n+r+0.5)=n
若 0.5<=r<1, 则1<= r+0.5, (int)(x+0.5)=(int)(n+r+0.5)=n+1

热心网友 时间:2023-10-24 21:08

正数 x 四舍五入的技巧:
x --> (int)(x+0.5)
当 x=n+r, 0<=r<1,
若 0<=r<0.5, 则r+0.5<1, (int)(x+0.5)=(int)(n+r+0.5)=n
若 0.5<=r<1, 则1<= r+0.5, (int)(x+0.5)=(int)(n+r+0.5)=n+1

热心网友 时间:2023-10-24 21:08

利用取整截断小数部分的特性来实现:

float x=3.1415,y; int a;
y=x*100+0.5; a=y; y=a; y/=100; //至此,y中存储的数为x的保留2位小数的结果

热心网友 时间:2023-10-24 21:08

正数 x 四舍五入的技巧:
x --> (int)(x+0.5)
当 x=n+r, 0<=r<1,
若 0<=r<0.5, 则r+0.5<1, (int)(x+0.5)=(int)(n+r+0.5)=n
若 0.5<=r<1, 则1<= r+0.5, (int)(x+0.5)=(int)(n+r+0.5)=n+1

热心网友 时间:2023-10-24 21:07

#include <stdio.h>
int p10(int m);//求10的次方
double rounding(double n,int w);//小数四舍五入,参数w:精确到第几数
int main()
{
    int w;
    double n;
    while(1)
    {
        printf("请输入一个实数:");
        scanf("%lf",&n);
        printf("请输入要精确到小数点后几位:");
        scanf("%d",&w);
        n=rounding(n,w);
        printf("四舍五入后的数值为:%.*lf\n\n",w,n);
    }
    return 0;
}
double rounding(double n,int w)//小数四舍五入,参数w:精确到第几数
{
    int z,p=p10(w+1);
    double d;
    d=n-(int)n;
    d+=1.0/p10(11);//避免精度丢失
    d*=p;
    d=(int)d;
    z=(int)d%10;
    if(z>=5)
        d=((d+10)-z)/p+(int)n;
    else
        d=(d-z)/p+(int)n;
    return d;
}
int p10(int m)//求10的次方
{
    int i,sum=1;
    for(i=0;i<m;i++)
        sum*=10;
    return sum;
}

热心网友 时间:2023-10-24 21:08

利用取整截断小数部分的特性来实现:

float x=3.1415,y; int a;
y=x*100+0.5; a=y; y=a; y/=100; //至此,y中存储的数为x的保留2位小数的结果

热心网友 时间:2023-10-24 21:08

正数 x 四舍五入的技巧:
x --> (int)(x+0.5)
当 x=n+r, 0<=r<1,
若 0<=r<0.5, 则r+0.5<1, (int)(x+0.5)=(int)(n+r+0.5)=n
若 0.5<=r<1, 则1<= r+0.5, (int)(x+0.5)=(int)(n+r+0.5)=n+1
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
CAD具体是学什么的 cad学什么专业好 CAD属于什么课型 文胸36/80是什么尺码 21.22.23.24.25.这5个数横竖家起来都要等于69 21.22.23.24.25.5个数字横竖等于69怎么做 已知递增的等差数列{an}满足a1=1,a3=a2²-4,则an=? 已知递增等差数列an的前n项和为Sn,a1=1,且a2+1,a4+1,S4成等比数列 求数... 金鱼吊兰有什么作用,可供观赏改善风水 金鱼吊兰是什么植物? C语言中的保留两位小数四舍五入的问题 小数点后两位四舍五入保留用输入输出函数做。用C语言怎么做? C语言将x四舍五入保留两位小数并输出的两种方法是否等同? C语言四舍五入保留两位小数的程序怎么写? 葱什么时候栽 c语言中如何进行四舍五入,求详细解释!!谢谢! C语言。从键盘读入一个实数,对其进行四舍五入处理,要求精确到到小数点后两位。 张杰和华晨宇参加了什么节目 华晨宇张杰参加的综艺节目有哪些 张杰上过哪些综艺节目? 安徽哪个城市美女多 安庆真出美女么 盘点张杰近期综艺节目,【在线观看】免费百度云资源 张杰上过的综艺节目有什么 安徽出美女最多的城市哪里呢? 张杰和谢娜参加过的综艺节目名单(要全的) 安徽省哪的美女最多? 安庆出美女多还是扬州的美女多啊! 张杰都上过哪些综艺节目 在浙江卫视“倒”了两次的张杰,是否也告别了危险综艺选择了安稳? 为什么这张唯美的图片是六个手指头呢 C语言编程 对变量保留两位小数 并进行四舍五入 C语言中对求得的值取小数点后一位,对第二位按四舍五入处理怎么操作 这两幅图很有灵异,哪位大神讲一下,第二幅图我就看出来手指…… c语言四舍五入 一支手的五个手指~~从大拇指开始到小拇指都被称为~什么指?最好来张图。 反洗钱法最新规定 银行的电子银行部一般做点什么事情 詹姆斯有六个脚趾?? 危机边缘中六个指头的血手印是怎么回事? 有人给我发一张图片!幸福在我的左边,可我,却不是个左撇子,抓不住你。是什么意思? 初中学生五个指头皲有图片,能看看怎么治? 宝宝学折纸:打领带的爱心折纸怎么做?方法又简单,上手更快 失地农民养老保险与社会保障局的养老保险可以一起购买同时享用吗? 怎么用纸折饺子 或者用领带叠成饺子的形状? 微信接收到的图片存哪里的,怎么设置成用其他软件时显示在桌面 手机忘记密码,想恢复出厂设置怎么办?? 忘记手机开机密码怎么办? 信用记录不良会产生什么影响? 信用不良记录造成的影响?