首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

...一个整数int,而不是在强制转换后还要继承float的精确度

发布网友 发布时间:2024-10-22 12:33

我来回答

2个回答

热心网友 时间:2024-11-09 03:57

首先,用VC6运行你的程序也是正确。


float浮点数的精度是小数点后6位之内都可以保证,所以你的问题不是float精度问题,因为不清楚你的错误结果是什么,无法猜测。

下面给你一个使用数组和循环的程序,在节省代码的同时,增加了两个安全处理:双精度和安全运算(这个在你的程序中同样适用,你可以修改试试)

#include<stdio.h>
#include<stdlib.h>
int main()
{
    double x;//双精度
    int y,i;
    int a[13]={10000,5000,2000,1000,500,200,100,50,20,10,5,2,1};
    int b[13];
    scanf("%lf",&x);
    x= x*100.0;
    y=(int)x;//安全计算

    for (i=0;i<13;i++)
    {
        b[i] = y/a[i];
        y = y%a[i];//y - a[i]*b[i]
    }
    for (i=0;i<13;i++)
    {
        if(b[i]==0) continue;
        if(a[i]<10)//fen
            printf("%d fen: %d\n",a[i],b[i]);
        else if(a[i]<100)//jiao
            printf("%d jiao: %d\n",a[i]/10,b[i]);
        else //yuan
            printf("%d yuan: %d\n",a[i]/100,b[i]);
    }

    system("pause");
    return 0;
}

热心网友 时间:2024-11-09 03:51

不知道是系统问题还是什么别的问题,我这里试的就是完全正确的。

热心网友 时间:2024-11-09 03:50

首先,用VC6运行你的程序也是正确。


float浮点数的精度是小数点后6位之内都可以保证,所以你的问题不是float精度问题,因为不清楚你的错误结果是什么,无法猜测。

下面给你一个使用数组和循环的程序,在节省代码的同时,增加了两个安全处理:双精度和安全运算(这个在你的程序中同样适用,你可以修改试试)

#include<stdio.h>
#include<stdlib.h>
int main()
{
    double x;//双精度
    int y,i;
    int a[13]={10000,5000,2000,1000,500,200,100,50,20,10,5,2,1};
    int b[13];
    scanf("%lf",&x);
    x= x*100.0;
    y=(int)x;//安全计算

    for (i=0;i<13;i++)
    {
        b[i] = y/a[i];
        y = y%a[i];//y - a[i]*b[i]
    }
    for (i=0;i<13;i++)
    {
        if(b[i]==0) continue;
        if(a[i]<10)//fen
            printf("%d fen: %d\n",a[i],b[i]);
        else if(a[i]<100)//jiao
            printf("%d jiao: %d\n",a[i]/10,b[i]);
        else //yuan
            printf("%d yuan: %d\n",a[i]/100,b[i]);
    }

    system("pause");
    return 0;
}

热心网友 时间:2024-11-09 03:56

不知道是系统问题还是什么别的问题,我这里试的就是完全正确的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com