【问题标题】:Increment decimal, floating point numbers递增十进制,浮点数
【发布时间】:2011-06-07 15:55:20
【问题描述】:

谁能解释增加浮点数的最佳逻辑/方法?

例如,如果我们假设起始十进制数是 2.0,那么接下来的项目应该会自动得到相应的数字,例如 2.01、2.02、2.03、.....、2.09、2.10、2.11.. 等等。

但起始数字是 2.1,那么下一个序列是什么:

是吗? 2.11、2.12、2.13、2.14、...... 2.19、2.20 等等......?

我在逻辑上是正确的吗?我很迷惑。请帮忙。

【问题讨论】:

  • 这里没有“最佳”——这取决于您的要求。 (另外,也不是很清楚——你使用的是真正的十进制浮点类型吗?不要使用二进制浮点类型来处理这种情况。)
  • 是的。我意识到我的应用程序需要与上面发布的完全相同的序列。我得到了解决方案。感谢您的帮助。

标签: floating-point numbers decimal


【解决方案1】:

这完全取决于应用程序需要什么。你需要按百分之几计算吗?如果是这样,那么这些序列是有意义的。

为避免舍入误差,您可能希望存储初始值、增量数和增量大小,如下所示:

      float start = 2.0;
      float increment = 0.01;

      for (int i = 0; i < 10; i++)
      {
            printf("%f ", start + increment * i);
      }

【讨论】:

  • 是的。这正是我一直在寻找的。我的应用程序需要与我在帖子中描述的相同顺序。谢谢丹尼尔。
【解决方案2】:

"float 值的自增应该由自增操作符来完成"。 但这件事是不可能的,因为增量运算符仅适用于小数位数之前的数字。如果对浮点数应用自增运算符,则值序列为 0.1、1.1、2.1、3.1 等。

【讨论】:

    【解决方案3】:
    double i= 5.012;     //variable i holds a double floating point number.
                         // float/double/long double any type can be used.
    
    i+= 0.1;             //increment i by 0.1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 2010-11-03
      • 2014-08-14
      相关资源
      最近更新 更多