c语言精确小数位数会怎样舍去后面的小数
Note1:
正数 x 四舍五入的技巧:
x --> (int)(x+0.5)
当 x=n+r, 0<=r<1,
若 0<=r<0.5, 则r+0.5<1, (int)(x+0.5)=(int)(n+r+0.5)=n
若 0.5<=r<1, 则1<= r+0.5, (int)(x+0.5)=(int)(n+r+0.5)=n+1
Note2:
举例来说: 若正数要依舍去法精确到小数点後第二位
x --> (int)(x*100)/100 就好.
例如 3.2794 --> (int)(327.94)/100=327/100=3.27
Note3:
举例来说: 若正数要四舍五入精确到小数点後第二位
x*100 四舍五入再除以100 就好
也就是 (int)(x*100+0.5)/100
可以在输出时,指定小数点后的有效位数,实现精确到若干位的效果。
要精确到小数点后若干位,则数据类型为浮点型,可能为单精度(float)或双精度(double)。
在C语言中,使用格式化输出函数printf来实现输出。
输出格式为
%.NF
1 %为格式化字符串的引导字符。
2 .N表示指定显示N位小数。
3 F为类型字符,对于float, F值为f, 对于double,F值为lf。
举例:
1 要输出float a=1.23234; 保留3位小数的写法为:
printf("%.3f",a);
2 输出double b=123.345232; 保留4为小数,写法为:
printf("%.4lf",b);
1、正数x四舍五入的技巧:
doublex;
x=(int)(x+0.5);
2、举例:若正数要依舍去法精确到小数点後第二位;
例如6.2367–>(int)(623.67)/100.0=623/100.0=6.23
doublex;
x=(int)(x*100)/100.0;//注意是除以100.0;
3、举例:若正数要四舍五入精确到小数点後第二位,即x*100四舍五入再除以100;
x=(int)(x*100+0.5)/100.0;
扩展资料
C语言保留小数点后一位
例:
#include<stdio.h>
voidmain()
{
floata=1,b=2,c;//先定义一个实型数据
c=a/b;
printf("%.1f
",c);//重点在于%.1f
}
你好!!
int main()
{
float a = 3.155; //保留到小数点后两位
float b =(int)((a*100)+0.5)/100.0; //四舍五入的运算
printf("原来的小数:%.3f
四舍五入后:%.2f
",a,b);//输出结果
return 0;
}
//可以用以下代码进行测试:
#include <stdio.h>
int main()
{
printf("%.2f
", 3.141592653);
printf("%.3f
", 3.141592653);
printf("%.4f
", 3.141592653);
printf("%.5f
", 3.141592653);
printf("%.6f
", 3.141592653);
printf("%.7f
", 3.141592653);
printf("%.8f
", 3.141592653);
return 0;
}
结果表明:到预设精度处会进行四舍五入
C语言用%m.nf输出浮点数时,会从n+1位小数位进行四舍五入。
如:
printf("%5.2f
", 3.567 ); //输出 3.57,前面有一个空格,补齐五个字符宽度。
但,由于浮点数是不精确的数据,与实际准确数是有误差的,四舍五入也会出现差异,如:
float f=3.155;
printf("%f
", f ); //默认小数位6位,第七位四舍五入:3.155000
printf("%.10f
", f ); //输出:3.1549999714
//参考以上代码说明,理解以下输出
printf("%.2f
", f ); //3.15
printf("%.3f
", f ); //3.155
c语言精确小数位数会怎样舍去后面的小数
doublex;x=(int)(x*100)\/100.0;\/\/注意是除以100.0;3、举例:若正数要四舍五入精确到小数点後第二位,即x*100四舍五入再除以100;x=(int)(x*100+0.5)\/100.0;
c语言精确小数位数会怎样舍去后面的小数
doublex;x=(int)(x*100)\/100.0;\/\/注意是除以100.0;3、举例:若正数要四舍五入精确到小数点後第二位,即x*100四舍五入再除以100;x=(int)(x*100+0.5)\/100.0;
c语言精确小数位数会怎样舍去后面的小数
C语言用%m.nf输出浮点数时,会从n+1位小数位进行四舍五入。 如: 1 printf("%5.2f\\n", 3.567 ); \/\/输出 3.57,前面有一个空格,补齐五个字符宽度。 但,由于浮点数是不精确的数据,与实际准确数是有误差的,四舍五入也会出现差异,如: 1 2 3 4 5 6 float f=3.155; printf("%f\\n", f ); \/\/默...
C语言小数点怎么精确到后若干位
要精确到小数点后若干位,则数据类型为浮点型,可能为单精度(float)或双精度(double)。在C语言中,使用格式化输出函数printf来实现输出。输出格式为%.NF1 %为格式化字符串的引导字符。2 .N表示指定显示N位小数。3 F为类型字符,对于float, F值为f, 对于double,F值为lf。举例:1 要输出float a=1...
在c语言中如何指定精确到小数点后任意位数?
x 四舍五入的技巧:\\x0d\\x0ax --> (int)(x+0.5)\\x0d\\x0a当 x=n+r, 0 (int)(x*100)\/100 就好.\\x0d\\x0a例如 3.2794 --> (int)(327.94)\/100=327\/100=3.27\\x0d\\x0a\\x0d\\x0aNote3:\\x0d\\x0a举例来说: 若正数要四舍五入精确到小数点後第二位\\x0d\\x0...
C语言编程序时怎么控制浮点型输出的小数点精确到几位
使用输出格式说明符来指定精确到小数点位数。如:void main(){ float a=345.234678;printf("%.3f\\n", a) ;} 其中%.3f里的3就表示输出精确到小数点后3位。所以可参考的形式是printf("%m.nf",p);m.nf,指定输出的数据共占m列,其中有n位是小数。如果数值长度小于m,则左端补空格,若数值...
c语言如何让输出结果精确到两位小数
C语言中浮点数输出精确到两位小数的语句如下 double a=2.0;printf ("%.2f", a);\/\/其中.2指明两位小数 说明:如%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,如果9缺省则场宽为该数实际位数 规定符 d 十进制有符号整数 u 十进制无符号整数 f 浮点数 s 字符串 c 单个...
C语言输入小数,精确到小数点后10位
把scanf("%15.10f",&x);应该改成scanf("%15lf",&x);这样就好了。代码中x是double型的,在输入数据的时候是不允许使用%f的,double型的数据输入必须使用%lf 还有,scanf("%15.10f",&x);15.10这个是不允许出现的,在数据输入的时候只能指定输入数据的总长度,不能指定小数点后的长度。
C语言里,double类型的数据可以精确到小数点后几位?
C语言里面,默认%f是小数点后6位,如果想小数点后面16位,写成%.16lf,不会自动四舍五入的,double是一个近似值,通常没有办法做的很精确。通常能精确到小数点后面5,6位,也就是说超过5,6位了可能就不准了。1、double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = ...
C语言如何想精确几位小数就精确几位? 假设输入数n,就精确n位这么弄
以输出π值为例,给出算法:include <stdio.h> define PI 3.1415926535897932384 void main( ){ char str[81]="PI=%10.00f\\n";int n;printf("input n(1-15):");scanf("%d",&n);str[7]='0'+n\/10;str[8]='0'+n%10;printf(str,PI);} 这段程序能输出float的全部16为精度。
贠堵心安: 如果是输出的话,可以用: printf("%.4f",3.1415926);
市南区19562047463: 用C语言编程如何实现保留几位小数并对最后一位四舍五入呀?谢谢了 - ?
贠堵心安: 很简单,假如你有一个float型变量a,其值为1.23456,而你只想保留三位小数,也就是希望得到1.235,只需要令: a = (int)(1000.0 * a + 0.5) / 1000.0 即可.如果要保留四位小数,就把1000都换成10000,依次类推.
市南区19562047463: C语言 输入一个数 a ,使之保留2位小数,对小数点后第3位数进行四舍五入,怎么做??? - ?
贠堵心安: #include"stdio.h" int main() {double a,b,c,ans;scanf("%lf%lf%lf",&a,&b,&c);ans=(a+b+c)/3;printf("%.1lf\n",ans);//格式化输出1位小数,后面自动四舍五入的return 0; }
市南区19562047463: 关于c语言的题,要求对小数点后第三位进行四舍五入. - ?
贠堵心安: C语言是没有直接的对小数点后第三位四舍五入的函数的,但是可以间接实现. 具体的思路如下: 1. 把该数字乘以100,这样小数点之后第三位就是第一位了; 2. C语言取整的时候是社区小数,而不是四舍五入,此时只要把数字加上0.5后取整就可以实现四舍五入的效果,而且不用调用任何四舍五入的函数. 3. 实现代码与注释如下: void main() {double num=3.14159; //这里用PI的值距离num= (int)(num*100+0.5); //乘以100+0.5后取整printf("%.3lf",num); //输出结果 }
市南区19562047463: C语言怎么只保留小数点后的数字 - ?
贠堵心安: 可以利用C语言的强制转换规则. C语言规定,当浮点数强制转换为整型类型时,只保留整数部分. 所以对于浮点数,比如float类型a, 执行(int)a后的值就是整数部分. 这样当执行a-(int)a时,得到的就是小数部分的值了. 如果该功能经常使用,那么可以定义一个带参数的宏 #define DECIMAL(X) (x-(int)x) 这样执行DECIMAL(a)得到的值就是t的小数部分.
市南区19562047463: c语言根据一个变量,动态显示小数点后位数,最后一位还要四舍五入,怎么设计? - ?
贠堵心安: 1比如显示a位 该数乘以10的a次方 加0.5 取整 按字符串输出 合适的地方输出小数点 2如果小数点后位数少的话用switch 按照一般%.2f这样方便一些
市南区19562047463: C语言把小数精确到后一位:比如: - ?
贠堵心安: int的作用是将后面计算结果强制数据类型转换为int, 换句话说舍弃小数部分: i*10=123.4 (i*10)+0.5=123.9 如果原小数点后第2位>=5,这个加法会导致进位,在整数部分实现四舍五入 (int)((i*10)+0.5)=(int)(123.9)=123 取整实现舍弃后续位 (int)((i*10)+0.5)*0.1=12.3
市南区19562047463: 用键盘输入一个 数字,对他的小数点后第二位四舍五入,如何用C语言编程.要解题分析. - ?
贠堵心安: #include <stdio.h> void main() { float a; printf("Enter a=:"); scanf("%f", &a); printf("a=%.2f\n", a); } 这个比较方便,可以试下.如果输入数字3.4567的时候,本程序可以输出3.46 第一个回答者的程序在会输出 3 第二个回答者的程序会输出3.5 第三个回答者的程序也是输出3.5 而且本程序在输入3.2时会输出3.20,所有的数都会保留两位小数,用 a=%.2f 格式很方便.本人亲自验证哦.
市南区19562047463: c语言保留一位小数,第二位四舍五入 - ?
贠堵心安: 把那个数扩大十倍, 在取个位, 在用IF比较. 在把它缩小十倍.
市南区19562047463: 在c语言中如何指定精确到小数点后任意位数? - ?
贠堵心安: Note1: 正数 x 四舍五入的技巧: x --> (int)(x+0.5) 当 x=n+r, 0<=r<1, 若 0<=r<0.5, 则r+0.5<1, (int)(x+0.5)=(int)(n+r+0.5)=n 若 0.5<=r<1, 则1<= r+0.5, (int)(x+0.5)=(int)(n+r+0.5)=n+1Note2: 举例来说: 若正数要依舍去法精确到小数点后第二...