不确定如何处理 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
您可以使用双精度或浮点数进行舍入
使用 double
或 float
号码。在定义和 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
。
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
您可以使用双精度或浮点数进行舍入
使用 double
或 float
号码。在定义和 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
。