(float)_micron_to_meter如何等于零?给定:
//convert microns to meters via multiplication
#define _micron_to_meter (1 / 1000000)然而
printf("factor: %f\n", (float)_micron_to_meter);打印0.000000。
哦..。嗯..。真不敢相信我忘了这个。请在下面回答。我不愿发表这篇文章,但我在这里做了相当广泛的搜索,没有找到任何关于它的其他帖子。而且一定会有其他的程序员像我在这里一样一无所知。如果你找到了另一个帖子,请随意将其标记为副本,但请检查为什么找不到该帖子?
发布于 2021-07-28 02:39:55
请注意任何未来的C程序员(我/知道/这个,我不确定我是如何错过它的)。如果你有一个由整数组成的小数定义,例如
//convert microns to meters via multiplication
#define _micron_to_meter (1 / 1000000)则该值为零。在它离开()之前,它已经是零了。因为假设1是一个整数,并且(int)1除以任何大于0的值都小于1,所以整数只能从1到0。如果这样做:
#define _micron_to_meter (1.0 / 1000000)然后它就会按预期工作,因为1.0被假定为浮点数。
https://stackoverflow.com/questions/68550216
复制相似问题