【问题标题】:Incrementing/decrementing entirely a float type number完全递增/递减浮点类型数
【发布时间】:2016-04-23 12:52:10
【问题描述】:

我要做的是增加整个浮点值,例如:

递增

-0.09683964401

到:

1.09683964401

或:

1.09683964401

到:

2.09683964401

递减

-0.09683964401

到:

-1.09683964401

或:

-1.09683964401

到:

-2.09683964401

我知道我需要使用循环,但我该怎么做呢?

这是我尝试过的:

(float)myFloatValue++;

这并不能满足我的实际需要。

【问题讨论】:

  • 这段代码做了什么你不需要的?
  • @nicomp 我应该循环使用它吗?我应该如何做一个循环?回答您的问题:它不会增加整个浮点值。
  • 顺便说一句 -0.09 + 1 不是 1.09 而是 0.91...
  • 您说“我要做的是增加整个浮点值”,但您的示例显示仅增加整数部分;并保持浮动部分的绝对值不变
  • 我不知道那是什么意思。 “它不会增加整个浮点值”?确切地说,它有什么作用?整个代码 sn-p 长什么样子?

标签: c++ increment decrement


【解决方案1】:

您的示例中的行为可以通过以下方式重现:

void increment(float& f)
{
    if ( f > -1 && f < 0 )
        f = -f;
    ++f;
}

void decrement(float& f)
{
    if ( f > 0 && f < 1 )   // Presumably; you didn't show any examples in this range
        f = -f;
    --f;
}

【讨论】:

    【解决方案2】:

    您不需要循环来增加或减少任何数字。使用 ++ 运算符

    myFloatValue++
    

    myFloatValue = myFloatValue + 1
    

    这将增加整个数字,而不仅仅是整数部分。如果只想增加整数部分,那么

    myFloatValue = myFloatValue < 0 ? (-myFloatValue  + 1) : (myFloatValue +1);
    

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 2011-06-07
      • 2015-07-14
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      相关资源
      最近更新 更多