我有一个关于ceil()函数的问题。在下面的代码中,我尝试在C中对变量monthlyPayment向上舍入两位小数,而ceil函数似乎在输出中被忽略了。图像中的是与其假设的输出进行比较的结果。img
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#define MONTHS 12
int main()
{
double principle;
double rate;
double numYears;
double numMonths;
double monthlyPayment;
double monthlyRate;
printf("Welcome to the morgage calculator.\nEnter your principal amount to get started. ");
scanf_s("%lf", &principle);
printf("Enter the yearly morgage interest rate ");
scanf_s("%lf", &rate);
printf("Enter the number of years ");
scanf_s("%lf", &numYears);
numMonths = numYears * MONTHS;
monthlyRate = rate / MONTHS / 100;
monthlyPayment = ((monthlyRate) / (1 - pow((1 + monthlyRate), (-numMonths)))* principle);
monthlyPayment = monthlyPayment * 100;
ceil(monthlyPayment);
monthlyPayment = monthlyPayment / 100;
double toPrince = 0.0;
double interest = 0.0;
printf("Your total monthly payment ammount:$ %.2lf\n", monthlyPayment);
printf("Month\tPrinciple\tInterest\t $ to Principle\n");
for (int index = 1; index <= numMonths;) {
interest = principle * monthlyRate;
toPrince = monthlyPayment - interest;
printf("%2d%16.2lf %16.2lf %16.2lf\n", index, principle, interest, toPrince);
principle = principle - toPrince;
index++;
}
}发布于 2016-08-02 00:01:26
只要返回结果,ceil()就不会改变变量。应该是:
double result = ceil(var);发布于 2016-08-02 00:08:05
你可以通过观察C函数不能修改它们的参数来发现问题,除非你传递一个指向你想要修改的东西的指针。这就是在对scanf的调用中添加&符号的原因。
ceil(monthlyPayment)中没有与号,而且monthlyPayment也不是指针;因此,不可能进行任何修改。
您可以按如下方式修复monthlyPayment的向上舍入代码:
monthlyPayment = ceil(monthlyPayment * 100) / 100;https://stackoverflow.com/questions/38703227
复制相似问题