c++ - 此 for 循环的第 11 次迭代中的问题:“for (float x = -1; x < 1.1f; x += 0.1f)”
问题描述
我试图沿着 unit[-1, +1] 水平线以 0.1 的间隔生成一些点。这是代码。
for (float x = -1; x < 1.1f; x += 0.1f)
{
line.points.push_back(Point(x, 0.5f, x * 1.0f));
}
当我后来试图画出这些点时,
for (size_t i = 1; i < tLine.points.size(); i++)
{
std::cout << "drawing" << '\n';
DrawLine(
(int32_t)tLine.points[i].x,
(int32_t)tLine.points[i].y,
(int32_t)tLine.points[i - 1].x,
(int32_t)tLine.points[i - 1].y,
olc::BLACK);
}
我注意到打印在控制台上的“绘图”在程序冻结 11 次迭代后停止。经过一番调试,我发现问题出在第一个for循环生成点上。当我打印出x
那个 for 循环的值时,它给了我
-1
-0.9
-0.8
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.0999999
7.45058e-08 // ???
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
如您所见,应该为 0 的值是一些无意义的值。之前的那个也差了一点。
在那个 for 循环中,0.1
被添加到-0.0999999
给7.45058e-08
. 我还手动尝试添加相同的两个数字,但它给出了1.04308e-07
(我希望它给出 0)。发生了什么事,我该如何解决这个问题?谢谢。
解决方案
推荐阅读
- r - R:将一个变量的图与其余变量配对
- firebase - 最大用户数
- bootstrap-4 - 隐藏标题导航
- xamarin.forms - Xamarin Forms(Android):ListView向上滑动以取消拉动以刷新
- python - 对视图的请求总是在 Django 中异步运行
- c - pthread/uthread 类型变量
- node.js - Node.js 绝对路径和相对路径导致 2 个单独的引用,还是它们相同?
- nltk - 名称“nltk”未定义
- java - Visual Studio Code Spring Boot 重新加载静态内容
- java - 通过使用 UPPERCASE 或 LOWERCASE 释放的 JTextField 键在 SQL 表中搜索