分数化小数

今天开始重新刷紫书,算是对自己的一个交代,总觉得这样心里会很踏实,也没啥,或者不就求个踏实吗,so,开始了,先来个最简单的模拟,分数化小数,想来我还是有成长的,一年前写这个题还不会写呢,哈哈,话不多说,开始吧;

题目大意:

输入三个int型整数a,b,c,然后让你求出a/b的保留c为小数形式;

基本思路:

这里有一个特殊写法,可以学一下,在不超过16位的时候还是可行的,然后超过了,就模拟手算;

代码如下:

不超过16位:
#include<bits/stdc++.h>

using namespace std;

int main()

{

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

printf("%.*lf",c,(double)a/b);

return 0;

}


模拟:

#include<bits/stdc++.h>


using namespace std;


int main()
{
    int a,b,c;
    while(scanf("%d%d%d",&a,&b,&c)==3&&a&&b&&c)
    {
        int t,num=1;
        t=a/b;
        printf("%d.",t);
        a=a-b*t;
        while(num<c)
        {
            a*=10;
            t=a/b;
            printf("%d",t);
            num++;
            a=a-b*t;
        }
        a*=10;
        int tt=a/b;
        a=a-b*tt;
        a*=10;
        t=a/b;
        if(t>=5) tt++;//确保最后一位四舍五入;
        printf("%d\n",tt);
    }
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值