【发布时间】:2012-10-22 08:00:37
【问题描述】:
我正在尝试这样一个相当简单的代码:
float a = 1.5;
printf("%d",a);
它打印出0。但是,对于其他值,例如 1.4、1.21 等,它会打印出一个垃圾值。不仅是 1.5,对于 1.25、1.5、1.75、1.3125(换句话说,可以完美转换为二进制形式的十进制数),它正在打印0。这背后的原因是什么?我发现了一个类似的帖子here,第一个答案看起来很棒,但我看不出来。任何机构都可以解释为什么会这样吗?字节序与 t 有什么关系?
【问题讨论】:
-
是的,我知道。这是我在问题中提供的链接!
-
看看浮点数和整数是如何存储在位中的。
-
@Cupidvogel:是的,我知道。你基本上又问了同样的问题,因为你不明白答案。您应该对已接受的答案添加评论,要求澄清。
-
大多数时候我这样做,人们没有回应。所以我又问了一遍。再加上答案,虽然简洁,但对我来说有点难以理解,因为我是 C 的新手。所以我想我可以做一个详细的解释。
-
你们为什么总是四处寻找机会来结束问题、删除问题、投反对票等?您是否只是为了能够做到这一点而获得积分?做这些事情会让你有力量感吗?通过负责来尝试维护网站的标准是一回事,即使对 OP 来说非常不方便,也要让其成为你存在的理由是另一回事。
标签: c floating-point integer double endianness