C语言四舍五入的问题
发布网友
发布时间:2022-04-22 14:12
我来回答
共5个回答
热心网友
时间:2023-10-17 15:18
这样,你把这个小数,乘以10的8次方,然后对结果取整(也就是强制转化为int型),然后对这个取整后的int型,再除以10的8次方,就搞定了.
如果你想四舍五入,比方说,想要3.14159,四舍五入取小数点后3位,
你可以将3.14159*1000,得到3141.59,然后再加上0.5,得到3142.09,然后再取整(强制转化为INT型),得到3142,然后再除以1000,就得到你想要的小数点后3位的四舍五入了,就是3.142.
如果不想要四舍五入,直接截取,就不要加上0.5
热心网友
时间:2023-10-17 15:19
我没看清。
乘10的8个零,然后转换为int型。然后除以10的8个零要小数点,就是(int)(p*100000000)/100000000.0就可以不四舍五入了这个比较笨的方法
热心网友
时间:2023-10-17 15:19
#include "stdio.h" /* 输入一个double型数据 ,保留两位小数,虽然程序有点啰嗦,但还是行的*/
main()
{
double x,a;
printf("请输入一个double型的小数");
scanf("%lf",&x);
x=x*100;
a=x;
(int) (a);
x=x+0.5;
(int) (x);
if(x=a)
{ a=a/100;
printf("%.2lf",a);}
else
{x=x/100;
printf("%.2lf\n",x);}
}
热心网友
时间:2023-10-17 15:20
只是取小数点后8位…并不四舍五入。
热心网友
时间:2023-10-17 15:21
C语言中一般不四舍五入,而是只考虑
整数部分
,如
int
i,j;
i=7/5;(即1.4)
j=9/6;(即1.5)
printf("%d
%d",i,j);
输出均为1