c语言对一个实数进行四舍五入的语句
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/06 00:38:04
小数最后一位=小数*1000%10If小数最后一位
#include#includemain(){doublea=1.25;intn=1;a=(double)((int)(a*pow(10,n)+0.5))/pow(10,n);printf("%.1f
根据第三位小数数位上的数字进行四舍五入,若该数字小于等于4,则直接舍去,且第二位小数不变;若该数字大于等于5,则在舍去后将第二位小数数位上的数字加一.例如:8.824,四舍五入后为8.82;8.825
intmain(){floata,b,c;floatsum;scanf("%f",&a);scanf("%f",&b);scanf("%f",&c);sum=(a+b+c)/3;sum=(float)
#include"stdio.h"#include"math.h"void main(){ int i,j=NULL,
没见过,不过你可以自己用小技巧:比如要保留2位小数的floata第三位四舍五入则可以这样a=(int)(a*100+0.5)/100
好像没有四舍五入这个说法吧,只有全舍不入,即浮点型转整型时直接去掉小数位,保留整数位.例如:b=a+c+0.5原理:假如a+c=10.49999999那么a+c+0.5=10.99999999,转为i
#include#include#include#include#defineBUF_MAX100doublehandle(char*str)//处理没括号的{doubleres,*data=NULL
声明:doublea;输入a后:a=(double)(((int)((a+0.005)*100.00))/100.00);
%.nf,其中n是字面常量,功能是输到小数点后面的第n位,第n+1位“四舍五入”.下面是在VC++6.0环境下的测试结果./*0.2345620.2350.23460.23456Pressanykey
再问:我想知道我为什么会出错再答:对比我的程序还不知道么?你需要使用%.2f或者%g输出,这是输出格式的问题,不是你计算的问题。
有差别,第一个不会做四舍五入的,它精确的进行了计算,第二个是正确的,进行了舍运算,这个运算是在(int)的时候利用类型转换做的如果你输出的结果是一样的,我怀疑是你在输出的时候指定了输出精度,你检查一下
#includeintmain(){doublea;scanf("%lf",&a);printf("%.1lf\n",a);return0;}再问:printf("%.1lf\n",a);这句是什么意
#include "stdio.h"int main(){ double x; int y;&n
#include"stdio.h"voidmain(){doublea=3.5678;//a可换成其他小数intb=(int)(a*100);doublec=b/100.0;printf("%.2f"
看来这需要用数组来解决了,不然没有办法解决已输出的数据再问:我也觉得是。。。这种算法弊端就在于没办法回头去改数据。但是用数组的话又太麻烦再答:#include <stdio.h>
你要知道long的话是不计小数的,比如2/5是等于2,不是等于2.5所以加0.5再转换成long的话就可以四舍五入了比如你最后结果得1.2,加0.5之后得1.7,转成long的话就是1比如你最后结果得
scanf函数你用错了scnaf("%lf",&j);你换成这个试试看
以下仅为个人意见,不保证正确我把楼主给的几种情况都反汇编了之后发现,b=a*100+0.5;b=(int)(b);b=b/100;或b=b/100.0两种结果一样分开写时.80483fb:8b45e8
#include#includedoubleround(double&x,intn)//对x四舍五入保留n为小数{doublet1,t2=modf(x,&t1);doublet3=pow(10,n);