c - 返回书名、价格和页数的程序
问题描述
这只是一个基本程序。我们将输入书名(1 个字符名称)、价格(浮点数)和页数(整数) ant 输出应该与输入相同,但事实并非如此。
#include<stdio.h>
int main()
{
struct book
{
char name;
float price;
int pages;
};
struct book b1,b2,b3;
printf("Enter names,prices & no. of pages of 3 books\n");
scanf("%c %f %d",&b1.name,&b1.price,&b1.pages);
scanf("%c %f %d",&b2.name,&b2.price,&b2.pages);
scanf("%c %f %d",&b3.name,&b3.price,&b3.pages);
printf("And this is what you entered\n");
printf("%c %f %d\n",b1.name,b1.price,b1.pages);
printf("%c %f %d\n",b2.name,b2.price,b2.pages);
printf("%c %f %d\n",b3.name,b3.price,b3.pages);
return 0;
}
解决方案
这是您输入的内容。浮点数更多的是近似值而不是实际值。这就是为什么当您输入 时123.134
,计算机会将其四舍五入到最接近的可能值,123.124003
. 它适用于工程、图形和统计,这些微小的差异在呈现给人类之前会被四舍五入。但是当你想要精确的值时,浮点变量是完全不合适的。
在财务中,我们将 10 美元存储为“1000 美分”,以整数为单位。尝试使用 float 或 double 来表示货币值是一个很大的禁忌。
你想要的是十进制类型,但 C 中没有这种类型。
推荐阅读
- r - 使用 randomForest 包在随机森林中的分类输出
- go - 信号 goroutine 在通道关闭时停止
- java - Websphere 8.5 应用程序服务器无法将消息发送到响应队列
- java - 在 setScreen(new Screen2()) 之后无法停止渲染前一个 Screen1();
- sdl-2 - 在 Windows 10 中安装 Common Lisp Sketch 时出现问题
- c++ - 如何在 UML 类图中表示纯虚函数?
- swift - 使用 reloadData() 使滚动条在 UITableView 上始终可见
- docker - Docker 增加容器内存
- scala - 处理将数据帧保存到 Hbase-spark scala 的代码时出错
- python - 在 requests.post 之后返回请求上下文