不确定如何处理 C 中的重复小数

Not sure how to deal with repeating decimals in C

int number = round(2/3);
printf("%i", number);

输出是

0

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

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(void) {
  double number = round(2.0/3.0);
printf("%0.f", number);
}

输出=1

您可以使用双精度或浮点数进行舍入

使用 doublefloat 号码。在定义和 printf

#include <stdio.h>

int main(void)
{
    double number = (double)2/3;
    printf("%.f", number);
}

没有浮点计算,以下将仅使用整数除法四舍五入到最接近的值:

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

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