C:作业中美元/美分的舍入和输出格式

时间:2018-07-16 20:17:42

标签: c file-io floor currency-formatting

作为我在Intro to Dev类中的第一次家庭作业的一部分,我必须用C编写一个货币兑换程序。我已经满足了大多数的分配要求,但是我只能坚持两部分。

1)当我输入30000作为输入值时,我得到了两种汇率的2个新值,但是我应该将差值显示为最终输出。当我这样做时,四舍五入无法解决,并且差异比实际差异大一美分。我知道这个问题已经在课堂上解决了,但是即使我尝试匹配课文中的示例(拆分美元和美分),我最终还是得到了一分钱。

2)当我输入5000作为输入值时,最终的差值显示为“ 16.9”,但小数点后应有两位数字。无论我如何格式化输出,都无法在5000条目和30,000条目上都显示准确的格式。

由于这是我们在入门课程中的第一个任务,因此我们只能使用一些不同的参数/命令。我们不允许对任何东西使用double。指令中特别提到在报告差异时使用fabs()作为绝对值,这是我在这里所做的。我假设至少第一个问题是我对fabs()和floor()的排序,但是作为一个新手,我对在哪里寻找实际问题一无所知。任何建议或协助将不胜感激!

// This program compares a specified quantity of US Dollars to Czech
// Korunas at two different fixed exchange rates.

#include <stdio.h>
#include <math.h>

int kor;                        // User-entered Korunas
const float EXRATE1 = 42;       // Constant Exchange Rate 1
const float EXRATE2 = 37;       // Constant Exchange Rate 2
float dolex1;                   // User-entered Koruna value with Exchange Rate 1 applied
float dolex2;                   // User-entered Koruna value with Exchange Rate 2 applied
float diff;                     // Difference between two values
int dollars;                    // Diff value expressed as absolute, dollar digit
float cents;                    // Diff value expressed as absolute, cents digits

FILE *diskfile;

//Main function

main(){

// Get information from user

printf("*** Koruna Exchange App ***\n\n");

printf("How many korunas do you have in your savings account?\n");
scanf("%d", &kor);

printf("The exchange information for %d korunas is now being recorded.\n", kor);

// Combine user-entered value with various exchange rates to get new values

dolex1 = kor / EXRATE1;
dolex2 = kor / EXRATE2;

// Find difference between new values, then get absolute value

diff = fabs (dolex2 - dolex1);

//Separate dollars and cents

dollars = floor (diff);
cents = (diff-dollars) * 100;

//Open and create file

diskfile = fopen("c:\\class\\test-ke.txt","w");

//Display results

fprintf(diskfile,"For %d korunas:\n", kor);
fprintf(diskfile,"At the rate of %.0f korunas per U.S. dollar,\n", EXRATE1);
fprintf(diskfile,"you have %.2f U.S. dollars.\n", dolex1);
fprintf(diskfile,"At the rate of %.0f korunas per U.S. dollar,\n", EXRATE2);
fprintf(diskfile,"you have %.2f U.S. dollars.\n\n", dolex2);

fprintf(diskfile,"The difference is %d.%.f U.S. dollars.\n", dollars, cents);

fclose(diskfile);

return 0;

}  

1 个答案:

答案 0 :(得分:0)

请替换

http.Response response = await http.get('SOME URL',headers: {'Content-Type': 'application/json'});
List<dynamic> responseJson = json.decode(utf8.decode(response.bodyBytes));

使用此编辑:

fprintf(diskfile,"The difference is %d.%.f U.S. dollars.\n", dollars, cents);