首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么gcc计算浮点小数#定义为零?

为什么gcc计算浮点小数#定义为零?
EN

Stack Overflow用户
提问于 2021-07-28 02:39:55
回答 1查看 8关注 0票数 0

(float)_micron_to_meter如何等于零?给定:

代码语言:javascript
运行
复制
//convert microns to meters via multiplication
#define _micron_to_meter (1 / 1000000)

然而

代码语言:javascript
运行
复制
printf("factor: %f\n", (float)_micron_to_meter);

打印0.000000。

哦..。嗯..。真不敢相信我忘了这个。请在下面回答。我不愿发表这篇文章,但我在这里做了相当广泛的搜索,没有找到任何关于它的其他帖子。而且一定会有其他的程序员像我在这里一样一无所知。如果你找到了另一个帖子,请随意将其标记为副本,但请检查为什么找不到该帖子?

EN

回答 1

Stack Overflow用户

发布于 2021-07-28 02:39:55

请注意任何未来的C程序员(我/知道/这个,我不确定我是如何错过它的)。如果你有一个由整数组成的小数定义,例如

代码语言:javascript
运行
复制
//convert microns to meters via multiplication
#define _micron_to_meter (1 / 1000000)

则该值为零。在它离开()之前,它已经是零了。因为假设1是一个整数,并且(int)1除以任何大于0的值都小于1,所以整数只能从1到0。如果这样做:

代码语言:javascript
运行
复制
#define _micron_to_meter (1.0 / 1000000)

然后它就会按预期工作,因为1.0被假定为浮点数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68550216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档