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

标签 c file-io floor currency-formatting

作为开发入门类(class)中我的第一个家庭作业的一部分,我必须用 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;

}  

最佳答案

请更换

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

通过此编辑:

fprintf(diskfile, "The difference is %.2f U.S. dollars.\n", dollars+cents/100);

关于C:家庭作业中美元/美分的舍入和输出格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51369522/

相关文章:

java - 从 Java EE 应用访问外部配置文件

python - python中除法的奇怪行为

c++ - 如何使用 C++ 增加 Visual Studio 内部版本号?

python - 在 Python 中读取大文件的惰性方法?

c - 如何使用功能停止golang gRPC服务器?

python - 将数据添加到现有文件python的末尾

c - 我应该如何获得浮点值的小数部分?

c++ - : (int) blabla * 255. 99999999999997 或 round(blabla*255) 常识正确的是什么?

c - PostgreSQL PqGetValue char 到 c 编程中的整数

c++ - 从命令行开始?