c语言根据一个变量,动态显示小数点后位数,...

c语言根据一个变量,动态显示小数点后位数,最后一位还要四舍五入,怎么设计?
符腾丹 来自: 网页 2016-09-01 00:49

声明:本网站依照法律规定提供财经资讯,未授权或允许任何组织与个人发布交易广告。对任何广告信息请谨慎交易,谨防诈骗。举报邮箱:xxxxxxxxx@qq.com

2016-09-01 00:55最佳答案

C语言怎么实现浮点数的四舍五入,保留两位小数的设计过程为:
定义浮点点数变量df,输入浮点数
浮点数df扩大100倍
浮点数df增加0.5
利用floor()函数得到最接近df数,但不大于df的整数(完成四舍五入)。不能用int强制转换,否则,数据超过int范围就会出现错误。
浮点数df缩小100倍得到有两位小数的浮点数
按%.2f输出结果。
参考代码:
#include <stdio.h>#include <math.h>void main(){ double df=0; printf("input d: "); scanf("%lf", &df ); df *= 100 ; df += 0.5 ; df =floor(df); df /= 100; printf("d=%.2f\n", df );}
 

其他回答(共7条)

  • 2016-09-01 01:13 齐晓威 客户经理

    方法有很多。(我尽量把思想写明白点,代码你自己去写,有助你弄懂它)
    方法一:比如这个数是a,你先拿a乘1000取整给b(b是整型的),然后判断b%10是否大于4,是的话,做b=b/10;a=b/100.0+0.01;
    小于或等于的话做b=b/10;a=b/100.0; 注:是b/100.0不是b/100。因为整型/整型得到的结果还 是整型,而你要的结果是实型。
    方法二:用数组来存放这个数,如 char a[20];gets(a);
    然后判断“.“(小数点)在哪个位置,然后判断小数点后的第三位是否大于'4',
    是的话,小数点第二位加1,然后从小数点第二位往前扫描只要有大于'10'(出小数点外)就前一位加1(怎么加?是a[i-1]+1还是((a[i-1]-'0')+1)+'0').
    如果扫描不到小数点说明是整数,什么都没必要做了,怎么判断有没有小数点?很简单,可以用一个量int a=0;用a记下小数点的位置,如果a的值最后还是0,说明是整数,要不然你也知道小数点的位置了。

    注:建议用方法1,代码短也简单,方法2涉及的知识点多,有一点难度,不过在做高精度的时候,是一个很好的方法,还有:4==‘4’ -'0' ,'0'!=0,为什么? 因为字符'0'的编码是48,不是0.
     
  • 2016-09-01 01:10 赵风茹 客户经理

    用double类型的变量。是不是计算表达式非要选个数值变量啊! 必须要选,但不一定是数值变迹浮管簧攮毫归桐害昆量,也有字符变量,根据表达式的类型来选。
    热心网友 
  • 2016-09-01 01:07 龚安静 客户经理

    我写的C语言的算法,应该你可以转换下吧?呵呵!
    就是通过整形数据的特点了;

    例如该变量为float x;浮点型数据

    四舍五入的算法为:
    {int i=0; 整型数据;
    i=(2*x*100+1)/2;
    x=(floa亥矗忿匪莜睹冯色辅姬t)i/100;
    }
    当保留小数点后两位是用100;3为是1000,1位是当然是10了;

    明白?

    唉!没学过,看着有点困难。
     
  • 2016-09-01 01:04 梅金莉 客户经理

    输出语句可以这样写: printf("%.3f\n&quot肌怠冠干攉妨圭施氦渐;,a); 假设a是你要输出的变量。其中".3f"就是指限定输出3位小数,并且C语言会自动进行末位的四舍五入。
     
  • 2016-09-01 01:01 符腾丹 客户经理

    其实C语言本来就提供四舍五入的功能,关键是你要输出小数的几位。
    要输出几位,就在输出时 “袱花递拘郛饺店邪锭矛 %0.*f” 的 “ * ” 处填多少就行了。O(∩_∩)O~

    # include <stdio.h>
    int main()
    {
    float a; //定义一个浮点数a
    scanf("%f", &a); //输入a
    printf("%0.1f", a); //输出a,对a小数点后两位进行四舍五入
    return 0;
    }
     
  • 2016-09-01 00:58 齐晓彤 客户经理

    基本语法介绍预处理命令
    把小写字母转换成大写字母chara,b;a='x';b='y';a=a-32;b=b-32;
    printf("%c,%c\n%d,%d\n",a,b,a,b);
    复合赋值语句有利于编译处理,能提高编译效率并产生质量较高的目标代码C语言中的空语句:while(getchar!='\n');//这里包含了空循环体
    scanf与printf:
    scanf输入数据可以指定数据字段的宽度,但不能规定数据的精度,而printf则可以printf(“%3,2f”,a);//这里的3.2表示按实数形式输出,输出宽度为3,如果输出的数不足3,位,则按实际宽度输出,四舍五入保留两位小数预处理命令
    宏定义
    (1)不带参数的宏定义#definePI3.1415926//不用加分号
    (2)带参数的宏定义
    #defineMAN(a,b)((a)>(b)?(a):(b))

    在语句块内定义的变量称之为局部变量,又称为内部变量,仅在定义它的语句块内有效,并且拥有自己独立的存储空间。
    全局变量:
    在函数之外定义的变量成为全局变量。
    如果在同一个源文件中,全局变量和局部变量同名,则在局部变量的作用范围内,全局变量不起作用,即被“屏蔽”。
    说明:
    (1)一个函数中既可以使用本函数的局部变量,又可以使用有效的全局变量。(2)利用全局变量可以增加函数联系的渠道,从而得到一个以上的返回值(3)全局变量一般第一个字母用大写表示
    (4)建议在一般情况下不要使用全局变量,因为全局变量一直占用存储空间,降低ile函数的通用性和程序的清晰性,容易出错。变量的存储类型:(1)自动型变量
    autointi=1;
    auto关键字只能用于定义局部变量,为默认的类型(2)寄存器型变量register
    (3)静态型变量static
    该变量只有在所在的函数内有效,退出该函数时该变量的值仍然保留,下次进入后仍然可以使用。退出程序时值才消失。(4)外部型变量extern
    C程序在编译时当遇到extern,先在本文件中找外部变量的定义,如果找到,就在本文件中扩展作用域,如果找不到就在连接时从其他的文件中找到外部变量的定义如果找到,就将作用域扩展到本文件,否则按出错处理。
    在高级语言的学习中一方面应数量掌握该语言的语法,因为它是算法实现的基础,另一方面必须认识到算法的重要性,加强思维训练,以便写出高质量的程序。getchar()getch()getche()函数和putchar()putch()函数
    putchar(c)putch(c)把单个字符c输出到标准设备上getchar()getche()getch()函数用于从终端输入数据
    getchar()按enter键之后才接受数据,只接收第一个数据
    getch()和getche()在输入一个字符后立刻被函数接受,不用按enter键。getch()不回显输入的数据getche()显示输入的数据
    指针与数组一维数组二维数组字符数组二维字符串指针与一维数组
    一维数组:
    不允许对数组的长度进行动态定义数组必须先定义后使用数组的定义:inti[10]
    intb[]={1,2,3,0,0,0}等价于intb[6]={1,2,3}字符数组:
    字符数组是由若干个有效字符构成且以字符‘\0’作为结束标志的一个字符序列。字符数组的定义:
    chara[10];
    字符数组的初始化:
    对字符数的各个元素分别进行初始化cha...... 
  • 2016-09-01 00:52 齐新洲 客户经理

    用float定义变量 没有满足小数点后面N位的变量 即使float变量也只保留小数点后面六位数计算表达式时必须选择变量 这是C语言的规定
    热心网友 

相关百科精选

  • 史带“众享... 产品特色 1、该产品适...

  • 国寿英才少儿两全保险 国寿英才少儿两全保险是由中国人寿保险股份有限公司推出的一种意外险,年满20至50周岁,身体健康者均可作为投保人,为其出生满60天至14周岁,身体健康的子女或有抚养关系的少儿投保。