【问题标题】:Not sure how to deal with repeating decimals in C [duplicate]不知道如何处理C中的重复小数[重复]
【发布时间】:2023-03-30 02:38:01
【问题描述】:
int number = round(2/3);
printf("%i", number);

输出是

0

我希望得到 1,因为 0.6 循环应该四舍五入 - 我确定问题出在循环小数上,因为它们总是向下四舍五入 - 我不知道在这种情况下如何四舍五入。

【问题讨论】:

  • 表达式 2/3integer 除法之一,将为零。试试2.0/3
  • 是的,太完美了,谢谢!

标签: c numbers rounding cs50


【解决方案1】:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(void) {
  double number = round(2.0/3.0);
printf("%0.f", number);
}

输出 = 1

您可以使用 double 或 float 来舍入数字

【讨论】:

    【解决方案2】:

    如果没有浮点计算,以下将仅使用整数除法四舍五入:

    int a = 2;
    int number = (a + 1) / 3;    // = 1
    

    一般来说,将a / b四舍五入到最接近的整数相当于截断(a + b / 2) / b

    【讨论】:

      【解决方案3】:

      使用doublefloat 号码。在定义和printf

      #include <stdio.h>
      
      int main(void)
      {
          double number = (double)2/3;
          printf("%.f", number);
      }
      

      【讨论】:

        猜你喜欢
        • 2013-05-06
        • 2021-07-19
        • 1970-01-01
        • 2016-10-13
        • 2016-07-11
        • 2014-04-15
        • 2021-04-22
        • 2019-08-10
        • 1970-01-01
        相关资源
        最近更新 更多