Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这个代码是什么意思_C++_C - Fatal编程技术网

C++ 这个代码是什么意思

C++ 这个代码是什么意思,c++,c,C++,C,我在我们正在使用的一个框架中发现了以下代码 if (nValue + 0.01 > nLimit) nValue = nValue - 0.01; if (((nValue+1) / (int)(nValue+1)) == 1) sprintf(szValue, "%0.0f", nValue); else sprintf(szValue, "%0.2f", nValue); 这段代码的含义是什么?我认为nValue应该大于0 nValue+1用于n

我在我们正在使用的一个框架中发现了以下代码

if (nValue + 0.01 > nLimit)
   nValue = nValue - 0.01;

if (((nValue+1) / (int)(nValue+1)) == 1)
      sprintf(szValue, "%0.0f", nValue);
   else
      sprintf(szValue, "%0.2f", nValue);

这段代码的含义是什么?我认为nValue应该大于0

nValue+1用于nValue==0的情况


表示nValue是一个整数。(大约45.00)


所以开发人员希望为整数和浮点打印不同的情况。

我认为nValue应该大于0

nValue+1用于nValue==0的情况


表示nValue是一个整数。(大约45.00)


所以开发者想要打印不同的整型和浮点型。

第一部分测试nValue是否第一部分测试nValue是否
  • 假设代码处理的是以浮动形式存储的金额,第一个IF是从nValue中减去1美分,如果该值超过某个限制。如果没有更多的背景,我不能说任何关于目的的话

  • 第二块(笨拙地)处理显示一个没有小数点的值(如果它是一个直接的“美元”金额),以及其他有两个小数点的值

      • 假设代码处理的是以浮动形式存储的金额,第一个IF是从nValue中减去1美分,如果该值超过某个限制。如果没有更多的背景,我不能说任何关于目的的话

      • 第二块(笨拙地)处理显示一个没有小数点的值(如果它是一个直接的“美元”金额),以及其他有两个小数点的值

      希望这能对你有所帮助


      希望这能帮助您

      我怀疑第一部分是错误的尝试,以确保nValue不超过nLimit。可能应该是这样

      if (nValue + 0.01 > nLimit)
         nValue = nLimit - 0.01;
      
      换言之,如果nValue接近极限值0.01,则使其小于极限值0.01


      为了解释第二部分是如何工作的,它涉及到将一个浮点数除以该数的整数部分。如果数字是整数,那么结果将是1

      e、 g

      23.00 / 23 = 1 - It's an integer
      23.05 / 23 = 1.002 - It's not an integer
      
      每边加1(正如ufukgun所注意到的)是为了防止devide为零,但是除法是多余的,因为您可以简单地将浮点与int进行比较

      if (nValue == (int)nValue)
      

      我怀疑第一部分错误地试图确保nValue不超过nLimit。可能应该是这样

      if (nValue + 0.01 > nLimit)
         nValue = nLimit - 0.01;
      
      换言之,如果nValue接近极限值0.01,则使其小于极限值0.01


      为了解释第二部分是如何工作的,它涉及到将一个浮点数除以该数的整数部分。如果数字是整数,那么结果将是1

      e、 g

      23.00 / 23 = 1 - It's an integer
      23.05 / 23 = 1.002 - It's not an integer
      
      每边加1(正如ufukgun所注意到的)是为了防止devide为零,但是除法是多余的,因为您可以简单地将浮点与int进行比较

      if (nValue == (int)nValue)
      
      没有上下文,很难理解此代码的目的。它似乎试图确保
      nValue
      至少比
      nLimit
      小0.01,但是
      nValue-0.01
      可能仍然大于
      nLimit
      ,并且代码不会试图检测这种情况。
      nLimit
      是该类型的最大值吗?如果没有,是什么

      if (((nValue+1) / (int)(nValue+1)) == 1)
            sprintf(szValue, "%0.0f", nValue);
         else
            sprintf(szValue, "%0.2f", nValue);
      
      这是为了计算
      nValue
      是否为整数。如果它是一个整数,则仅将该数字的整数部分存储为字符串。否则,用两位小数存储该值

      没有上下文,很难理解此代码的目的。它似乎试图确保
      nValue
      至少比
      nLimit
      小0.01,但是
      nValue-0.01
      可能仍然大于
      nLimit
      ,并且代码不会试图检测这种情况。
      nLimit
      是该类型的最大值吗?如果没有,是什么

      if (((nValue+1) / (int)(nValue+1)) == 1)
            sprintf(szValue, "%0.0f", nValue);
         else
            sprintf(szValue, "%0.2f", nValue);
      


      这是为了计算
      nValue
      是否为整数。如果它是一个整数,则仅将该数字的整数部分存储为字符串。否则,将值存储为两位小数。

      这必须特定于您的框架和要求。
      n值
      代表什么?我讨厌人们使用浮点数表示金钱。。。我不想成为那个被起诉的人,因为由于模糊的舍入错误,他在一次付款后仍然拥有0.01欧元……可以肯定的是,我只是猜测我们在处理金钱。这次行动没有给我们任何线索。在任何情况下,它看起来都像是写得很糟糕的代码。这里的nValue表示系统性能计数器(RAM、交换使用)消耗量占总消耗量的百分比。这必须特定于您的框架和要求。nValue代表什么?我讨厌人们用float来表示钱。。。我不想成为那个被起诉的人,因为由于模糊的舍入错误,他在一次付款后仍然拥有0.01欧元……可以肯定的是,我只是猜测我们在处理金钱。这次行动没有给我们任何线索。在任何情况下,它看起来都是写得很差的代码。这里nValue表示系统性能计数器(RAM,交换使用)消耗占总数的百分比。注意,如果限制代码确实是它试图做的,那么它是不正确的。试试
      nValue=100.0
      nLimit=1.0
      @delty,你说得对,我做了一个改变。nLimit应该是lowerLimit或threashold,而不是Max注意,限制代码是不正确的,如果这确实是它试图做的。试试
      nValue=100.0
      nLimit=1.0
      @delty,你说得对,我做了一个改变。nLimit应该是一个较低的限额,而不是最大限额。我认为你的第一部分是错的,但第二点我认为你的第一部分是错的,但第三部分(未显示)上的第二点可能从第一部分中取出一分钱,并将其转移到框架开发人员的退休基金。可能是第三部分(未显示)从第一块中取出一分钱并将其转移到框架开发人员的退休基金。ues nLimit是此类型的最大值,小于100ues nLimit是此类型的最大值,小于100