用C语言怎么实现浮点数的四舍五入,保留两位小数点 C语言编写程序,对一个double型数据进行四舍五入,要求保...

C\u8bed\u8a00\u5982\u4f55\u5b9e\u73b0\u8f93\u51fa\u6d6e\u70b9\u6570\u5c0f\u6570\u70b9\u4e24\u4f4d\uff08\u56db\u820d\u4e94\u5165\u6cd5\uff09\uff0c\u4f46\u82e5\u5c0f\u6570\u70b9\u6700\u540e\u4f4d\u4e3a\u96f6\u5219\u820d\u53bb\uff1f\uff1f

\u53ef\u4ee5\u901a\u8fc7sprintf\u51fd\u6570\u5b9e\u73b0\u6570\u5b57\u56db\u820d\u4e94\u5165\u8f6c\u5b57\u7b26\u4e32\uff0c\u901a\u8fc7\u5904\u7406\u5b57\u7b26\u4e32\uff0c\u5b9e\u73b0\u6240\u9700\u529f\u80fd\uff0c\u5177\u4f53\u4ee3\u7801\uff0c

#include
int main(int argc, char *argv[])
{
char buffer[40];//\u5b58\u50a8float\u6570\u636e
float fnum=12.396;//\u5f85\u6d4b\u8bd5\u6570\u636e
sprintf(buffer,"%.2f",fnum);//\u56db\u820d\u4e94\u5165\u8f6c\u5316\u4e3a\u5b57\u7b26\u4e32
int i=0;
for(;*(buffer+i)!='.';i++);//\u7edf\u8ba1\u5c0f\u6570\u70b9\u7684\u4f4d\u7f6e
if(*(buffer+i+2)=='0')//\u5904\u7406\u5c0f\u6570\u70b9\u540e\u7b2c\u4e8c\u4f4d\u5b57\u7b26\uff0c\u5982\u679c\u4e3a0\uff0c\u66ff\u6362\u4e3a'\0'
*(buffer+i+2)='\0';
printf("\u56db\u820d\u4e94\u5165\u540e\uff0c\u6570\u636e\u53d8\u4e3a\uff1a%s\n,",buffer);

return 0;
}

float \u4e3a\u5355\u7cbe\u5ea6\u6d6e\u70b9\u578b\u6570\u636e\uff0c\u5728Turbo C\u4e2d\u5355\u7cbe\u5ea6\u578b\u53604\u4e2a\u5b57\u8282\uff0832\u4f4d\uff09\u5185\u5b58\u7a7a\u95f4\uff0c\u5176\u6570\u503c\u8303\u56f4\u4e3a3.4E-38\uff5e3.4E+38\uff0c\u53ea\u80fd\u63d0\u4f9b7\u4f4d\u6709\u6548\u6570\u5b57\u3002\u5efa\u8bae\u8f93\u5165\u91c7\u7528\u5b57\u7b26\u4e32\u5f62\u5f0f\uff0c\u8fd9\u6837\u7edf\u8ba1\u4e0d\u4f1a\u51fa\u504f\u5dee\uff0c\u4f7f\u7528\u6570\u5b57\u65f6\uff0c\u4f7f\u7528double atof( const char *str )\u51fd\u6570\u8f6c\u6362\uff1b\u5982\u679c\u4f7f\u7528\u6570\u5b57\uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u88650\u7684\uff0c\u4e0e\u5b9e\u9645\u671f\u671b\u4e0d\u7b26\u3002

\u4f8b\u5982double\u578b\u7684\u6570\u636e\u4e3aa=5.1413\uff0c\u7a0b\u5e8f\u5982\u4e0b\uff1a
#incloud
main( )
{
double a\uff1b
printf("\u8bf7\u8f93\u5165\u4e00\u4e2adouble\u578b\u6570\u636e\uff1a\u201d\uff09\uff1b
a= int (a*100+0.5)/100 \uff1b
printf("%lf",a)\u3002
}
\u8fd9\u65f6\u5019printf\u8f93\u51fa\u7684\u7ed3\u679c\u5c06\u662f5.14\u3002

\u6269\u5c55\u8d44\u6599\uff1a
C\u8bed\u8a00\u7f16\u5199\u7a0b\u5e8f\uff0c\u5bf9double\u578b\u6570\u636e\u8fdb\u884c\u56db\u820d\u4e94\u5165\uff0c\u4fdd\u7559\u4e09\u4f4d\u6709\u6548\u6570\u5b57\uff0c\u7a0b\u5e8f\u5982\u4e0b\uff1a
\u8fd9\u91cc\u4ee5b=8.8888
#incloud
main( )
{
double b\uff1b
printf("\u8bf7\u8f93\u5165\u4e00\u4e2adouble\u578b\u6570\u636e\uff1a\u201d\uff09\uff1b
b= int (b*1000+0.5)/1000\uff1b
printf("%lf",b)\u3002
}
\u8fd9\u65f6\u5019printf\u8f93\u51fa\u7684\u7ed3\u679c\u5c06\u662f8.889\u3002

C语言怎么实现浮点数的四舍五入,保留两位小数的设计过程为:

  1. 定义浮点点数变量df,输入浮点数

  2. 浮点数df扩大100倍

  3. 浮点数df增加0.5

  4. 利用floor()函数得到最接近df数,但不大于df的整数(完成四舍五入)。不能用int强制转换,否则,数据超过int范围就会出现错误。

  5. 浮点数df缩小100倍得到有两位小数的浮点数

  6. 按%.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
", df );
}


加0.5强制转int。这是取到整数的方法。其他位数道理差不多。2位的话你先乘100,加0.5强制转int,然后除回100。注意类型转换。除100要转double。

float a=10.123;
a=((int)((a*100+5)/100))/100.0;//这个值应该就是保留两位小数点的值吧

printf("%4.2f",a);类似的,前面一个4是字的位数,后面一个2是两位小数

  • 鐢–璇█鎬庝箞瀹炵幇娴偣鏁扮殑鍥涜垗浜鍏,淇濈暀涓や綅灏忔暟鐐
    绛旓細C璇█鎬庝箞瀹炵幇娴偣鏁扮殑鍥涜垗浜鍏ワ紝淇濈暀涓や綅灏忔暟鐨勮璁¤繃绋嬩负锛氬畾涔夋诞鐐圭偣鏁板彉閲廳f锛岃緭鍏ユ诞鐐规暟 娴偣鏁癲f鎵╁ぇ100鍊 娴偣鏁癲f澧炲姞0.5 鍒╃敤floor()鍑芥暟寰楀埌鏈鎺ヨ繎df鏁帮紝浣嗕笉澶т簬df鐨勬暣鏁帮紙瀹屾垚鍥涜垗浜斿叆锛夈備笉鑳界敤int寮哄埗杞崲锛屽惁鍒欙紝鏁版嵁瓒呰繃int鑼冨洿灏变細鍑虹幇閿欒銆傛诞鐐规暟df缂╁皬100鍊嶅緱鍒版湁涓や綅灏忔暟鐨勬诞鐐规暟...
  • C璇█涓浜涢銆傘傝鐨勬槑鐧界殑杩藉姞鍒!
    绛旓細娴偣鍥涜垗浜鍏ヤ繚鐣檔浣嶅皬鏁 鍖呮嫭< stdio, h > Floatfun锛團loatx锛宨ntm锛夛紱Intmain锛堬級锝 娴姩锛汭ntn锛汸rintf锛堚滆緭鍏锛氣濓級锛涜緭鍏ヤ竴涓娴偣鏁 鎵弿鏂囦欢(" % f "锛 & a);Printf锛堚滆緭鍏锛氣濓級锛涜緭鍏ヤ繚鐣欑殑灏忔暟鐐 scanf (" % d "锛 & n);A锛漟un锛圓锛宯锛夛紱Printf锛堬紓锛協锛糿锛傦紝a锛...
  • c璇█涓娴偣鏁板洓鑸嶄簲鍏 銆 淇濈暀涓涓诞鐐规暟灏忔暟鐐瑰悗鐨6浣,绗3浣嶈鍥涜垗...
    绛旓細鍙互杩欐牱锛宨nclude <stdio.h>int main(){double d1 = 1234.567;double d2 = d1 - (int)d1; // 姹傚嚭灏忔暟閮ㄥ垎int i = d2 * 1000; // 鍙栧嚭灏忔暟鍚3浣峣f (i%10 >=5 ){i -= i%10;i += 10; // 鍥涜垗浜鍏d1 = (int)d1 + (double)i / 1000;printf("d1 = %lf \n",...
  • C璇█涓浣瀵娴偣鏁杩涜鍥涜垗浜鍏?
    绛旓細C璇█涓浜庢诞鐐规暟杈撳嚭鐨勫洓鑸嶄簲鍏ユ槸鑷姩杩涜鐨勩鍦ㄦ诞鐐规暟鐨勬湁鏁堜綅鏁拌寖鍥村唴锛屽綋瑕佹眰淇濈暀灏忔暟鐐瑰悗n浣嶆椂锛岀郴缁熶細鑷姩鏍规嵁绗琻+1鐨勫艰嚜鍔ㄨ繘琛屽洓鑸嶄簲鍏ユ搷浣銆備互涓嬩唬鐮佸彲浠ラ獙璇侊細//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"int main(void){ double pi=3.1415926...
  • C璇█濡備綍瀹炵幇杈撳嚭娴偣鏁灏忔暟鐐逛袱浣(鍥涜垗浜鍏ユ硶),浣嗚嫢灏忔暟鐐规渶鍚庝綅涓...
    绛旓細鍙互閫氳繃sprintf鍑芥暟瀹炵幇鏁板瓧鍥涜垗浜斿叆杞瓧绗︿覆锛岄氳繃澶勭悊瀛楃涓诧紝瀹炵幇鎵闇鍔熻兘锛屽叿浣撲唬鐮侊紝include <stdio.h> int main(int argc, char *argv[]){ char buffer[40];//瀛樺偍float鏁版嵁 float fnum=12.396;//寰呮祴璇曟暟鎹 sprintf(buffer,"%.2f",fnum);//鍥涜垗浜斿叆杞寲涓哄瓧绗︿覆 int i=0;for(;*...
  • 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璇█鍥涜垗浜鍏
    绛旓細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锛泒
  • 娴偣鏁灏忔暟鐐瑰悗闈㈢涓変綅鍥涜垗浜鍏ュ悧?
    绛旓細printf("%7.3f",100/3.0);琛ㄧず缁撴灉鍗犱竷浣嶏紝灏忔暟閮ㄥ垎鍗3浣嶏紝杩欐牱灏卞彲浠ヤ簡锛屽苟涓斿皬鏁扮偣鍚庣涓変綅鏄鍥涜垗浜鍏ョ殑缁撴灉銆備緥濡傦細C璇█涓娴偣鏁杈撳嚭绮剧‘鍒颁袱浣嶅皬鏁扮殑璇彞濡備笅锛歞ouble a=2.0;printf ("%.2f", a);//鍏朵腑.2鎸囨槑涓や綅灏忔暟 璇存槑锛氬%9.2f 琛ㄧず杈撳嚭鍦哄涓9鐨勬诞鐐规暟, 鍏朵腑灏忔暟浣嶄负2, ...
  • 扩展阅读:c语言浮点数规则 ... 浮点数表示方法图解 ... 浮点数取整c语言 ... 浮点数四舍五入c语言 ... c语言 浮点数 乘 速度 ... c语言怎么输出浮点数 ... c语言浮点数e3合法吗 ... c语言浮点数判别 ... 如何用c语言实现两数交换 ...

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