C语言四舍五入保留两位小数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言四舍五入保留两位小数相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
main()

double a;
printf("请输入一个四位小数:\n");
scanf("%d",&a);
a*=100;
a+=0.5;
(int)(a);
a/=100;
printf("结果是:%2f\n",a);


可以这样写吗?哪里错了?

#include <stdio.h>
main()

double a;
printf("请输入一个四位小数:\n");
scanf("%lf",&a);//双精度应该是的%lf
a*=100;// 扩大100倍,举个例子:a=123.4567,a=a*100,则a=12345.67
a+=0.5;//加0.5进行四舍五入a=12346.17
a=(int)a;//这个地方是想保留两位小数,后边的舍去,所以进行强制类型转换.
a/=100;//上面扩大100倍,现在要对其缩小100
printf("结果是:%f\n",a);//这样就行了,或者printf("结果是:%.2f\n",a);
参考技术A scanf("%d",&a);改为:
scanf("%lf",&a);

printf("结果是:%2f\n",a);改为:
printf("结果是:%.2f\n",a);

%2f 是按2位输出,%.2f是按小数部分保留两位输出,一失足成千古恨啊。小心呀追问

为什么要加这个 点 啊??新手求解

追答

额 刚刚修改了 贴上了。

追问

那我改成 ("%lf \n",a);这个可以吗?在(int)(a)那里已经取整了,再除100后,是不是也应该是两位小数?

追答

额 应该吧 不过那个0.5不是白加了么。
额 原来0.5是用来四舍五入的啊,何等的失态啊。
好强啊。

追问

为什么会白加呢?不是很懂,这样执行起来确实不行。

追答

printf 的话 没有lf的吧,只有浮点输出而已,那你改成 %f 试试。

追问

也不行,而且后边带好几个零,小数点后面六位,不是两位,我想知道为什么?

追答

额 那你还是用 %.2f 好了,估计是输出的默认格式吧
那你再输出个1.0看看 看看后面是不是还是有好多个0

调试了下:
(int)(a);//这一句没有预期的效果,该改为:
a=int(a);//具体原因,你自己想吧,有好处的哦。
至于小数后面的0的问题,无能为力啊,只能用%.2f了

本回答被提问者采纳
参考技术B 应该是精度问题。因你使用的是float变量,你可以用printf显示a*100的结果是155.499995而不是155.50000你可以全改成double型#include <stdio.h>
double fun ( double h )
return (long)( h * 100 +0.5 )/ 100.0;
main( )
double a;
printf ("Enter a: "); scanf ( "%lf", &a );
printf ( "The original data is : " );
printf ( "%lf %lf\n\n", a, a*100 );
printf ( "The result : %lf\n", fun ( a ) );

参考技术C 这样相当于取整,a*=1000;a+=5;a/=10;a/=100.0;这样就可以了!
设a为1.256,由a*=1000;得a=1256;由a+=5;得a=1231;由a/=10;得a=123;由a/=100.0;得a=1.230000;后面的不变。
参考技术D double a;改为 float a;
scanf("%f",&a);改为scanf("%lf",&a);
printf("结果是:%2f\n",a);改为printf("结果是:%.2f\n",a);

C语言中如何保留一位小数点

定义float类型
在输出时要求保留1位小数点
请问下格式是?
printf("%f",x);
%f后面应该怎么改?

可以通过printf函数中的输出格式说明符来实现保留一位小数点,要保留一位小数就用printf("%.1f",x),例子如程序中给出那样。

例子如下:

直接编译,程序输出结果如下图所示:

扩展资料:

1.printf("%3.0f",floatNum):不保留小数

说明:%3.0f表明待打印的浮点数(floatNum)至少占3个字符宽,且不带小数点和小数部分,整数部分至少占3个位宽;

注意:这里的3只代表整数部分至少占3位,舍弃小数点和小数点后面的部分。

2.printf("%6.2f".floatNum):保留两位小数

说明:%6.2f 表明待打印的数(floatNum)至少占6个字符宽度(包括两位小数和一个小数点),且小数点后面有2位小数,小数点占一位,所以整数部分至少占3位。

注意:这里的6是待打印的数至少占据的字符宽度,包括两位小数(如果小数不够两位用0补位,例如100.1打印出来为100.10)和一个小数点,所以整数部分至少占3个字符宽度。

参考技术A

采纳率:52%12级2015.05.17
可以通过printf函数中的输出格式说明符来实现保留一位小数点。

具体实现方法见下例:

float a = 3.14159;
printf("%.1f", a);  // 输出结果为3.1
更一般的形式如下:
printf("%x.yf", a); // 其中x, y都是常量,a是待输出的变量。
// 对于变量a的整数部分输出,如果a的整数部分不足x位,则在前面补空格,若大于x位,则按实际位数输出
// 对于变量a的小数部分输出,如果a的小数部分不足x位,则在后面补0,若大于x位,则按四舍五入准则输出y位小数

拓展资料:

一键还原类软件的备份文件。使用Ghost Explorer软件打开,可以查看该文件的内容。此文件不可删除!删除了以后就无法恢复系统了。

参考技术B

应该改为print("% .1 f",x),——(1的前面有个小数点)表示输出精确到小数点后1位。如果实际数字不足1位,则在末尾补0,若大于1位,则按四舍五入取前一位。

具体实现方法见下例:

float x = 3.1415926;

printf("%.1f", x);  // 输出结果为3.1。

拓展资料:

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

参考技术C

可以通过printf函数中的输出格式说明符来实现保留一位小数点。


具体实现方法见下例:

float a = 3.14159;
printf("%.1f", a);  // 输出结果为3.1


更一般的形式如下:

printf("%x.yf", a); // 其中x, y都是常量,a是待输出的变量。
// 对于变量a的整数部分输出,如果a的整数部分不足x位,则在前面补空格,若大于x位,则按实际位数输出
// 对于变量a的小数部分输出,如果a的小数部分不足x位,则在后面补0,若大于x位,则按四舍五入准则输出y位小数

参考技术D 可以通过printf函数中的输出格式说明符来实现保留一位小数点,要保留一位小数就用printf("%.1f",x),例子如程序中给出那样。直接编译,程序输出结果如下图所示:扩展资料:1.printf("%3.0f",floatNum):不保留小数说明:%3.0f表明待打印的浮点数(floatNum)至少占3个字符宽,且不带小数点和小数部分,整数部分至少占3个位宽;注意:这里的3只代表整数部分至少占3位,舍弃小数点和小数点后面的部分。2.printf("%6.2f".floatNum):保留两位小数说明:%6.2f 表明待打印的数(floatNum)至少占6个字符宽度(包括两位小数和一个小数点),且小数点后面有2位小数,小数点占一位,所以整数部分至少占3位。注意:这里的6是待打印的数至少占据的字符宽度,包括两位小数(如果小数不够两位用0补位,例如100.1打印出来为100.10)和一个小数点,所以整数部分至少占3个字符宽度。

以上是关于C语言四舍五入保留两位小数的主要内容,如果未能解决你的问题,请参考以下文章

C语言四舍五入保留两位小数

C语言如何实现在运算过程中的四舍五入保留两位小数

用C语言怎么实现浮点数的四舍五入,保留两位小数点

C语言编程 对变量保留两位小数 并进行四舍五入

C语言 如何实现保留三位小数,第四位四舍五入的程序

C语言编写程序,对一个double型数据进行四舍五入,要求保留两位有效小数,求算法。