c++ - 增加 float 值

标签 c++ c floating-accuracy

<分区>

Possible Duplicate:
Floating point inaccuracy examples

我在 C/C++ 的 WHILE 循环中有以下行:

while(...)
{
    x = x + float(0.1); // x is a float type. Is the cast necessary?
}

x 从 0 开始。问题是,在我的第一个循环之后,x = 0.1。这很酷。在我的第二个循环之后,x = 0.2。那真好;那真甜。但是,在我的第三个循环之后,x = 0.3000001。那不行。我希望它的值为 0.3,而不是 0.3000001。可以吗?我循环错了吗?

最佳答案

float 不是这样工作的,任何两个实数之间有无限多的实数,并且只有有限数量的位,这意味着在几乎所有情况下,浮点表示都是近似的。阅读此 link了解更多信息。

关于c++ - 增加 float 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14361225/

相关文章:

C++ 编译的应用程序

c++ - 给定一个线程 id,如何在 linux 上的 C++ 中确定它是否存活

c++ - 为什么带有 Bool 参数的函数接受 String?

c - 为什么在 printf 中使用相等时输出为 0?

c - 我应该更喜欢常量而不是定义吗?

c++ - 何时使用 `std::hypot(x,y)` 而不是 `std::sqrt(x*x + y*y)`

C++:重载函数和运算符的不同行为

c - "ssize_t wb;"中变量名的命名约定

floating-accuracy - 双 float 不准确的来源

c - double 的推荐最小 epsilon 是多少?