c# C中的数组(初学者)-我的输出与答案不同

3ks5zfa0  于 2023-11-15  发布在  C#
关注(0)|答案(1)|浏览(259)

我的代码没有产生想要的输出,我仍然不知道为什么。你能帮助我吗?谢谢!
问题是:计算每月总付款和从固定利率抵押贷款的初始贷款金额的差异。一个人想在河内买房子,并已接受了银行的固定利率抵押贷款,初始贷款金额为m,年利率为r%,持续时间为d年。每个月,买方将不得不支付本金和利息如下:每月固定本金额为m /(d * 12),每月利息按剩余本金额计算,第一个月为(m * r / 12)。在接下来的几个月里,它将是((m-m/(d * 12))* r / 12),等等,随着时间的推移而减少。
请编写一个程序,将初始贷款金额、固定利率和贷款期限作为输入,并在屏幕上打印d年内的月供总额以及与初始贷款金额的差额。这些值应显示为四舍五入到小数点后两位的浮点数。

INPUT 
1000000000 0.11 10 
OUTPUT 
1554583333.33 554583333.33

字符串
这是我的解决方案,但输出不同于答案的最后几个数字

#include <stdio.h>
int main()
{
    long long int money;
    double rate;
    int year;
    
    scanf("%lld %lf %d", &money, &rate, &year);
    
    double fixed_money=money/(year*12);
    double total_money=0;
    double a[year*12];

    for( int i=0; i< year*12; i++){
        a[i]= fixed_money+(money-i*fixed_money)*rate/12;
        total_money+=a[i];
    }
    
    printf("%.2lf %.2lf", total_money, total_money-money );
}


输出是:

1554583315.15 554583315.15

xzlaal3s

xzlaal3s1#

关键问题是money/(year*12)是整数除法,因此fixed_money的值为833333.0,最终输出为:

1554583315.15 554583315.15

字符串
使用1.0*money/(year*12)等,商为833333.33333...,最终输出为:

1554583333.33 554583333.33


然而,这也是错误的,因为每月付款需要四舍五入到最接近的美分或8333333.33,并最终输出:

1554583333.15 554583333.15

相关问题