直接定义无法实现,只有人为控制位数。。
#include
#include
#include
#define N 2//控制小数位数。。
int main(void)
{
float a = 10, b = 3;
float c;
int bit;
bit = pow(10, N);
c = (int)((a / b) * bit + 0.5) / (float)bit;//四舍五入。。如果不需要四舍五入,那个0.5去掉。。
printf("%f", c);
getch();
return (0);
}
定义的时候不能控制有效值位数,你可以尝试在计算完成后对结果c 进行处理,控制c的精度
如下程序可以实现:
但是必须把c定义为 double 否则有误差:
float a = 10, b = 3; float c;
char t[4];
float result;
//double result;
c = a / b;
sprintf(t,"%.2f",c); //将浮点数转换成字符串
result = (float)atof(t); //result = atof(t);//将字符串转化成浮点数
可以通过输出格式说明符来指定精确到小数点后几位。
比如:
printf("%2.3f\n", 3.1415926) // 输出_ 3.142 (其中_ 代表空格)
上面的输出格式说明符%2.3f 中各部分意思如下:
2—— 表示整数部分以固定2位宽度输出。如果数据的位数小于2,则左端补以空格,若大于2,则按实际位数输出。
.3——(3的前面有个小数点)表示输出精确到小数点后3位。如果实际数字不足3位,则在末尾补0,若大于3位,则按四舍五入取前三位。
电脑并无有效位数的概念,人才有这个想法,
电脑里数字输出时才有指明保留几位小数,保留的小数位数不能超过数据精度
程序返回数字给谁,给你,还是给屏幕,还是子程序返回给调用处? 问得晕乎乎
printf("%.2",c); 这能输出什么?掉了f或e,
用format试试!