【发布时间】:2020-09-01 04:08:11
【问题描述】:
我正在用 C 语言编写这段代码,但无法理解这两个代码得到不同答案的原因。
首先写入不带小数点的值
float num2=(5/9);
这给了我如下输出:
0.000000
带小数点
float num2=(5.0/9.0);
这给了我如下输出:
0.555556
这种不同答案背后的工作原理或理论是什么?
【问题讨论】:
-
因为
5/9是一个整数除法,提供一个整数值0,然后,这个整数值被转换为一个浮点数0.000000 -
感谢您的回答先生,但您能否告诉我为什么在使用数据类型 float 时会发生整数除法?知道我可以在哪里阅读什么内容以了解更多信息吗?谢谢
-
奇怪地与this question posted a few minutes ago相关。它不会变成
float,直到 after rhs 上的表达式被求值并且赋值开始起作用;该表达式纯粹是5/9中的int,每个整数除法规则为零。只有然后才会转换为float,从而变成0.0。通过5/9.f或5.f/9或其中的其他组合强制它浮动。 -
这很有见地。感谢您的帮助
标签: c floating-point type-conversion