【发布时间】:2020-06-12 00:30:41
【问题描述】:
int y = 89;
int foo = (y / 10.0 - y / 10) * 10;
int bar = (89 / 10.0 - 89 / 10) * 10;
cout << foo << ' ' << bar << '\n';
上面的代码是为了获取整数y的最后一位,奇怪的是foo是8而bar是9,为什么会这样呢?两个版本的表达式有什么区别?
【问题讨论】:
-
这个test 给出了
9 9顺便说一句,为什么不使用y % 10(取模运算)来获得最后一位? -
@TedLyngmo 我使用代码块编译器 17.12
-
我很确定它支持模数运算。试试
std::cout << y % 10 << '\n';,你会得到最后一个数字。 -
@TedLyngmo 我知道模 10 会给出预期的答案,我只是想看看这两个版本之间是否存在差异。
-
@TarekDakhran:您未能在您的环境中重现该问题的事实并不能证明该问题不存在。
标签: c++ floating-point