c 语言实数怎么四舍五入成两位小数
来源:学生作业帮助网 编辑:作业帮 时间:2024/09/20 18:48:05
小数最后一位=小数*1000%10If小数最后一位
C/C++中的“四舍五入”遵守的规则是“
#include#includemain(){doublea=1.25;intn=1;a=(double)((int)(a*pow(10,n)+0.5))/pow(10,n);printf("%.1f
floatx;.int(x+0.5);
printf("%.3f",变量);试试看,貌似是这样……
#include"stdio.h"#include"math.h"void main(){ int i,j=NULL,
没见过,不过你可以自己用小技巧:比如要保留2位小数的floata第三位四舍五入则可以这样a=(int)(a*100+0.5)/100
可以写个函数intsheru(doublei){doublea=i-(int)i;//求此浮点数的小数部分if(areturnint(i);//如果小数部分小于0.5.则返回整数部分.double强制
%.nf,其中n是字面常量,功能是输到小数点后面的第n位,第n+1位“四舍五入”.下面是在VC++6.0环境下的测试结果./*0.2345620.2350.23460.23456Pressanykey
输入格式"%f",表示以浮点类型输出float:2^23=8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;其它为限定输出格式,应该
有差别,第一个不会做四舍五入的,它精确的进行了计算,第二个是正确的,进行了舍运算,这个运算是在(int)的时候利用类型转换做的如果你输出的结果是一样的,我怀疑是你在输出的时候指定了输出精度,你检查一下
#include "stdio.h"int main(){ double x; int y;&n
一个double型的数强制转换后就把小数点后去了这个相当于if(x
((int)(2.556*100))/100.0
你要知道long的话是不计小数的,比如2/5是等于2,不是等于2.5所以加0.5再转换成long的话就可以四舍五入了比如你最后结果得1.2,加0.5之后得1.7,转成long的话就是1比如你最后结果得
scanf函数你用错了scnaf("%lf",&j);你换成这个试试看
浮点数如果比较是否相等的话,一般是通过(fabs(a-b)b,a
doublea,b,c;scanf("%lf",&a);scanf("%lf",&b);scanf("%lf",&c);printf("%.1lf",(a+b+c)/3+0.05);
以下仅为个人意见,不保证正确我把楼主给的几种情况都反汇编了之后发现,b=a*100+0.5;b=(int)(b);b=b/100;或b=b/100.0两种结果一样分开写时.80483fb:8b45e8
scanf("%d",&a);改为:scanf("%lf",&a);printf("结果是:%2f\n",a);改为:printf("结果是:%.2f\n",a);%2f是按2位输出,%.2f是按小数