【发布时间】:2021-01-19 09:22:09
【问题描述】:
我尝试在 Stack Overflow 上搜索此问题,但找不到答案。
代码如下:
#include <stdio.h>
int main(void) {
double y;
printf("Enter a number: ");
scanf("%lf", &y);
printf("Your number when rounded is: %.2lf", y);
//If user inputs 5.05286, how can i round off this number so as to get the output as 5.00
//I want the output to be rounded as well as to be 2 decimal places like 10.6789 becomes 11.00
return 0;
}
我要对一个数字进行四舍五入,比如数字是5.05286,应该四舍五入为5.00,如果是5.678901,则四舍五入为6.00和2小数位。数字5.678901 正在四舍五入为5.05,但它应该四舍五入为5。我知道我可以使用floor() 和ceil(),但我认为如果没有条件语句,我将无法完成答案,这不是我C 知识的范围。我也尝试使用round() 函数,但它根本不圆。
【问题讨论】:
-
floor(y*100+0.5)/100怎么样,顺便说一句,5.05286不是四舍五入到小数点后两位,只是5.05?仅将最后两位小数设为零并不是四舍五入到两位小数。您的描述适合 floor(y+0.5)。如果您意识到if x is over 0.5与x + 0.5 > 1相同,则不需要条件。 -
我也尝试使用 round() 函数,但它根本不舍入。 不知道你的意思 - 你只是使用类似
round(y);的东西吗?那行不通,但y = round(y);会 工作。 -
您应该使用
round提供您的尝试。 -
“我也尝试使用 round() 函数,但它根本不舍入。” - 那你做错了什么