• 玄学问题


    题面传送门

    不知道为啥取两位小数的时候我的代码运行出来会四舍五入
    而题解代码不会

    我的代码

    #include <stdio.h>
    int main(void)
    {
    	FILE *fp = fopen("data.txt","r");
    	int i;
    	double boundaries[] = {0, 1e5, 2e5, 4e5, 6e5, 1e6};
    	double part[] = {0.1, 0.075, 0.05, 0.03, 0.015, 0.01};
    	double in, ans = 0;
    	fscanf(fp, "%lf", &in);
    	for(i=5; i>=0; --i)
    		if(in > boundaries[i])
    		{
    			ans = ans + part[i]*(in - boundaries[i]);
    			in = boundaries[i];
    		}
    	fp = fopen("my.txt", "w");
    	fprintf(fp, "%.2f", ans);
    	return 0;
    }
    

    题解代码

    #include "stdio.h"
    int main()
    {
    	FILE *fp = fopen("data.txt", "r");
        double a,b;
        fscanf(fp, "%lf",&a);
        if(a<=100000)
        b=a*0.1;
        else if(100000<a && a<=200000)
        b=100000*0.1+(a-100000)*0.075;
            else if(200000<a  &&  a<=400000)
            b=100000*0.175 + (a-200000)*0.05;
                else if(400000<a  &&  a<=600000)
                b=100000*0.175 +200000*0.05 + (a-400000)*0.03;
                    else if(600000<a  &&  a<=1000000)
                    b=100000*0.175 + 200000*0.05 + 200000*0.03 + (a-600000)*0.015;
                        else if(a>1000000)
                        b=100000*0.175 + 200000*0.05 + 200000*0.03 + 400000*0.015 + (a-1000000)*0.01;
    	fp = fopen("test.txt", "w");
        fprintf(fp, "%.2lf
    ",b);
        return 0;
    } 
    

    数据生成器

    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    int main(void)
    {
    	FILE *fp = fopen("data.txt", "w");
    	srand(time(NULL));
    	fprintf(fp, "%d", 100000+rand());
    	return 0;
    }
    

    会出现差异的数据
    输入:131989
    我的输出:12399.18
    题解输出:12399.17

    经修改发现,如果取六位小数那么输出均为12399.175000

    我直接裂开
    希望各路网友帮忙指出错误,或者可能出现错误的地方

  • 相关阅读:
    WebForm捆绑压缩js和css(WebForm Bundling and Minification)
    2017.4.15
    .NET Core + docker入门
    微软官方教程视频入口
    C# struct和class
    法线的变换的一些概念
    透视投影矩阵的一些概念
    视图矩阵ViewMatrix一些概念
    矩阵一些概念
    向量一些概念
  • 原文地址:https://www.cnblogs.com/kuaileyongheng/p/14070383.html
Copyright © 2020-2023  润新知