c语言四舍五入是怎样的? 如何用C语言对实数四舍五入 ?? 谢谢各位了

c\u8bed\u8a00\u7f16\u7a0b~\u5982\u4f55\u56db\u820d\u4e94\u5165

# incloud
int main(void\uff09
{
float a \uff1b
scanf\uff08\u201c%f\u201d\uff0c&a\uff09\uff1b
a=\uff08int\uff09\uff08a*1000+0.5\uff09/1000.0\uff1b
printf \uff08\u201c%0.3f\u201d\uff0ca\uff09\uff1b
return 0\uff1b
}

\u6269\u5c55\u8d44\u6599\uff1a
\u5176\u4ed6\u65b9\u6cd5\u5b9e\u73b0\u56db\u820d\u4e94\u5165\uff1a
int myround\uff08double indata\uff0cint precision\uff0cdouble * outdata\uff09{
long pre = 1\uff0ci\uff1b
for\uff08i = 0; i <precision; i ++\uff09pre = pre * 10\uff1b
if\uff08cy_FloatCompare\uff08indata\uff0c0.00\uff09> 0\uff09
* outdata =\uff08int\uff09\uff08\uff08indata * pre\uff09+0.5\uff09/100.00\uff1b
else
* outdata =\uff08int\uff09\uff08\uff08indata * pre\uff09-0.5\uff09/100.00\uff1b
return 0\uff1b
}
// cy_FloatCompare\u662f\u6d6e\u70b9\u6570\u4e0e0\u6bd4\u8f83\u7684\u51fd\u6570\uff0c\u5047\u8bbe\u5b83\u5b58\u5728\u3002\u8fd4\u56de\u503c\u4e0estrcmp\u76f8\u540c\u3002

\u7ed3\u5408\u4f8b\u5b50\u8bf4\u660ejgr=(int)(((int)(jgread*100+0.5)/100.0)*100);
\u5c06a=1.364\u4fdd\u7559\u4e24\u4f4d\u5c0f\u6570\uff0c\u7b2c\u4e09\u4f4d\u56db\u820d\u4e94\u5165\u3002
#include "stdio.h"
main()
{
float a=1.346;
a=((int)(a*100+0.5))/100.0;
printf("%f",a);
}

\u601d\u8def\u662f\uff1a\u5982\u4e0a\uff0c\u5bf9\u5c0f\u6570\u70b9\u540e\u7b2c\u4e09\u4f4d\u56db\u820d\u4e94\u5165\uff0c\u90a3\u4e48\u4f60\u7ed9\u8be5\u6570\u52a0\u4e0a0.005\uff0c\u8fd9\u6837\uff0c\u5982\u679c\u7b2c\u4e09\u4f4d\u5927\u4e8e5\uff0c\u90a3\u4e48\u5b83\u4f1a\u5165\u4e0a\u53bb\u4e00\u4f4d\uff0c\u5982\u679c\u7b2c\u4e09\u4f4d\u5c0f\u4e8e5\uff0c\u90a3\u4e48\u5b83\u5c31\u4e0d\u4f1a\u8fdb\u4f4d\u3002\u4e0a\u9762\u4ee3\u7801a=((int)(a*100+0.5))/100.0;\u5c31\u662f\u7ecf\u884c\u4e86\u8fd9\u6837\u7684\u64cd\u4f5c\u3002\u5c06a\u4e58100\uff0c\u53d8\u4e3a134.6\uff0c\u7136\u540e\u52a00.5\uff0c\u7531\u4e8e\u5c0f\u6570\u4e3a6\uff0c\u90a3\u4e48\u52a05\u540e\u8fdb\u4f4d\uff0c\u5b9e\u73b0\u4e86\u4e94\u5165\u3002\u7136\u540e\u53d6\u6574\u5c06\u5176\u4f59\u5c0f\u6570\u820d\u53bb\uff0c\u5728\u9664\u4ee5100.0\uff0c\u8fd8\u539f\u4e3a\u539f\u6765\u5927\u5c0f\u3002

# incloud <stdio>

int main(void)

{

float a ;

scanf(“%f”,&a);

a=(int)(a*1000+0.5)/1000.0;

printf (“%0.3f”,a);

return 0;

}

扩展资料

其他方法实现四舍五入:

int myround(double indata,int precision,double * outdata)

long pre = 1,i;

for(i = 0; i <precision; i ++)pre = pre * 10;

if(cy_FloatCompare(indata,0.00)> 0)

* outdata =(int)((indata * pre)+0.5)/100.00;

else  

* outdata =(int)((indata * pre)-0.5)/100.00;

return 0;


// cy_FloatCompare是浮点数与0比较的函数,假设它存在。返回值与strcmp相同。



C语言没有四舍五入,只有全舍不入,即浮点型转整型时直接去掉小数位,保留整数位。

整数的除法(必须除数和被除数都是整数,否则认为是浮点数的除法)的确是只舍不进的,但是对于浮点数的除法,跟数学中的四舍五入一样
例如对于下面的程序:
#include<stdio.h>
void main()
{
double a = 10.55555555;
printf("%lf\n", a);
printf("%lf\n", 2.0/3.0);
}
运行后结果是:
10.555556
0.666667
(系统默认的小数输出个数是6个)

c语言在整形变量的运算中是只舍不入的,例如12/5,得2余2,但结果是2,不计余数,再如
47/7,得6余5,但结果还是6
浮点型变量运算可以根据你的需要保留相应的位数
例如float a=5,b=2,c;
c=a/b;
若输出的话,默认输出2.500000,当然你也可以根据自己的需要保留相应的位数,如printf("%.3f",c);即输出2.500(保留3位)

全舍不入

需要实现四舍五入的时候就要使用double或者float类型的数进行运算然后if判断

http://zhidao.baidu.com/question/68502540.html刚好有个类似的问题

  • c璇█鍥涜垗浜斿叆鎬庝箞琛ㄧず
    绛旓細C璇█涓洓鑸嶄簲鍏杩欐牱琛ㄧず锛歩nta=100.453627銆俻rintf("%.1f"锛宎+0.05)锛//鍥涜垗浜斿叆鍒板崄鍒嗕綅銆俻rintf("%.2f"锛宎+0.005)锛//鍥涜垗浜斿叆鍒扮櫨鍒嗕綅銆備互姝ょ被鎺紝瀵逛簬鍗佽繘鍒跺皬鏁.5绫诲瀷鏁帮紙濡0.5锛11.5锛18.5锛夛紝鍗冲皬鏁伴儴鍒嗗彲浠ヤ互2鐨勮礋涓娆℃柟鏉ヨ〃绀虹殑鏁帮紝杩欐椂璁$畻鏈烘槸鍙互鈥滃畬缇庘濈殑鍌ㄥ瓨杩欎釜鍗...
  • c璇█涓浣杩涜鍥涜垗浜斿叆,姹傝缁嗚В閲!!璋㈣阿!
    绛旓細printf("d1=%f,淇濈暀涓変綅灏忔暟鐨勭粨鏋滀负锛%.3f",d1,d3);鎬荤粨鍥涜垗浜斿叆淇濈暀n涓哄皬鏁 (int)(x*10鐨刵娆℃柟+0.5锛*10鐨勮礋n娆℃柟锛涘叾娆¤繖涓柟娉曞璐熸暟鏃犳晥锛涘鏋滈潪瑕佺敤鍙互鍏堝彇姝f暟閮ㄥ垎绠楋紝鏈鍚庡姞涓婅礋鍙 } 鏂规硶浜岋細浣跨敤round()鍑芥暟銆俰nclude"stdio.h"include"math.h"void main(){ float x;scanf(...
  • c璇█鍥涜垗浜斿叆鏄庢牱鐨?
    绛旓細int main(void锛墈 float a 锛泂canf锛堚%f鈥濓紝&a锛夛紱a=锛坕nt锛夛紙a*1000+0.5锛/1000.0锛沺rintf 锛堚%0.3f鈥濓紝a锛夛紱return 0锛泒
  • C璇█鎬庝箞鍥涜垗浜斿叆
    绛旓細int main(void锛墈 float a 锛泂canf锛堚%f鈥濓紝&a锛夛紱a=锛坕nt锛夛紙a*1000+0.5锛/1000.0锛沺rintf 锛堚%0.3f鈥濓紝a锛夛紱return 0锛泒
  • c璇█鍥涜垗浜斿叆
    绛旓細incloud <stdio> int main(void锛墈 float a 锛泂canf锛堚%f鈥濓紝&a锛夛紱a=锛坕nt锛夛紙a*1000+0.5锛/1000.0锛沺rintf 锛堚%0.3f鈥濓紝a锛夛紱return 0锛泒
  • c璇█,鍥涜垗浜斿叆浠g爜鐨勫師鐞嗘槸浠涔?
    绛旓細1.C璇█閲岄潰锛鍥涜垗浜斿叆鐨鍘熺悊灏辨槸婊5杩1銆傜敤浠g爜瀹炵幇灏辨槸鍔犱笂0.5锛屽啀鎴幓灏忔暟銆2.瀵逛簬娴偣鏁般俧loat x = 3.456; //淇濈暀鍒板皬鏁扮偣鍚庝袱浣 float y =(int)((a * 100) + 0.5) / 100.0;//output b = 3.46;瀵逛簬鏁存暟銆俧loat x ;int y ;y=(int)((x+0.5)>(int)x?(int)x+...
  • C璇█鍥涜垗浜斿叆?
    绛旓細灏嗚緭鍏ョ殑鏁板煎姞涓0.005鍚庯紝鎸夌収涓や綅灏忔暟瑙勬牸鍖栬緭鍑恒
  • c璇█ 鍥涜垗浜斿叆
    绛旓細incloud <stdio> int main(void锛墈 float a 锛泂canf锛堚%f鈥濓紝&a锛夛紱a=锛坕nt锛夛紙a*1000+0.5锛/1000.0锛沺rintf 锛堚%0.3f鈥濓紝a锛夛紱return 0锛泒
  • C璇█ 鍥涜垗浜斿叆
    绛旓細incloud <stdio> int main(void锛墈 float a 锛泂canf锛堚%f鈥濓紝&a锛夛紱a=锛坕nt锛夛紙a*1000+0.5锛/1000.0锛沺rintf 锛堚%0.3f鈥濓紝a锛夛紱return 0锛泒
  • c璇█涓洓鑸嶄簲鍏ユ庝箞琛ㄧず
    绛旓細4銆C璇█鐨杩愮畻闈炲父鐏垫椿锛屽姛鑳藉崄鍒嗕赴瀵岋紝杩愮畻绉嶇被杩滃浜庡叾瀹冪▼搴忚璁¤瑷銆傚湪琛ㄨ揪寮忔柟闈㈣緝鍏跺畠绋嬪簭璇█鏇翠负绠娲侊紝濡傝嚜鍔犮佽嚜鍑忋侀楀彿杩愮畻鍜屼笁鐩繍绠椾娇琛ㄨ揪寮忔洿涓虹畝鍗曪紝浣嗗垵瀛﹁呭線寰浼氳鐨勮繖绉嶈〃杈惧紡闅捐锛屽叧閿師鍥犲氨鏄杩愮畻绗﹀拰杩愮畻椤哄簭鐞嗚В涓嶉忎笉鍏ㄣ傚綋澶氱涓嶅悓杩愮畻缁勬垚涓涓繍绠楄〃杈惧紡銆備簩銆佸涔燙璇█鐨...
  • 扩展阅读:c++和python先学哪个 ... c++如何四舍五入取整数 ... c语言基础知识入门教程 ... c入门教程 ... c++输出保留两位小数 ... c++输出保留一位小数 ... c语言入门 ... c语言int四舍五入取整 ... c语言对小数进行四舍五入 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网