C语言的double与float类型最多只能默认输出小数位数都取6位? C语言中,float型和double型变量如果不指定宽度,应...

\u4e3a\u4ec0\u4e48double\u7c7b\u578b\u4e0efloat\u7c7b\u578b\u5728\u5c0f\u6570\u70b9\u540e\u90fd\u4fdd\u7559\u516d\u4f4d\u6709\u6548\u6570\u5b57\uff1f

float \u4e3a\u5355\u7cbe\u5ea6\uff0c\u6709\u6548\u6570\u5b57\u4e3a6~7 double \u4e3a\u53cc\u7cbe\u5ea6\uff0c\u6709\u6548\u6570\u5b57\u4e3a15~16 \u4f46\u4ed6\u4eec\u5728\u8f93\u51fa\u65f6\uff0c\u5c0f\u6570\u70b9\u540e\u90fd\u67096\u4f4d\u5c0f\u6570\u3002 \u5982\uff1a main() { int a=15; float b=123.1234567; double c=12345678.1234567; char d='p'; printf("a=%d,%5d,%o,%x\n",a,a,a,a); printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c=%lf,%f,%8.4lf\n",c,c,c); printf("d=%c,%8c\n",d,d); printf("e=%11.2",c); } \u672c\u4f8b\u7b2c\u4e03\u884c\u4e2d\u4ee5\u56db\u79cd\u683c\u5f0f\u8f93\u51fa\u6574\u578b\u53d8\u91cfa\u7684\u503c\uff0c\u5176\u4e2d\u201c%5d \u201d\u8981\u6c42\u8f93\u51fa\u5bbd\u5ea6\u4e3a5\uff0c\u800ca\u503c\u4e3a15\u53ea\u6709\u4e24\u4f4d\u6545\u8865\u4e09\u4e2a\u7a7a\u683c\u3002 \u7b2c\u516b\u884c\u4e2d\u4ee5\u56db\u79cd\u683c\u5f0f\u8f93\u51fa\u5b9e\u578b\u91cfb\u7684\u503c\u3002\u5176\u4e2d\u201c%f\u201d\u548c\u201c%lf \u201d\u683c\u5f0f\u7684\u8f93\u51fa\u76f8\u540c\uff0c\u8bf4\u660e\u201cl\u201d\u7b26\u5bf9\u201cf\u201d\u7c7b\u578b\u65e0\u5f71\u54cd\u3002\u201c%5.4lf\u201d\u6307\u5b9a\u8f93\u51fa\u5bbd\u5ea6\u4e3a5\uff0c\u7cbe\u5ea6\u4e3a4\uff0c\u7531\u4e8e\u5b9e\u9645\u957f\u5ea6\u8d85\u8fc75\u6545\u5e94\u8be5\u6309\u5b9e\u9645\u4f4d\u6570\u8f93\u51fa\uff0c\u5c0f\u6570\u4f4d\u6570\u8d85\u8fc74\u4f4d\u90e8\u5206\u88ab\u622a\u53bb\u3002\u7b2c\u4e5d\u884c\u8f93\u51fa\u53cc\u7cbe\u5ea6\u5b9e\u6570\uff0c\u201c%8.4lf \u201d\u7531\u4e8e\u6307\u5b9a\u7cbe\u5ea6\u4e3a4\u4f4d\u6545\u622a\u53bb\u4e86\u8d85\u8fc74\u4f4d\u7684\u90e8\u5206\u3002\u7b2c\u5341\u884c\u8f93\u51fa\u5b57\u7b26\u91cfd\uff0c\u5176\u4e2d\u201c%8c \u201d\u6307\u5b9a\u8f93\u51fa\u5bbd\u5ea6\u4e3a8\u6545\u5728\u8f93\u51fa\u5b57\u7b26p\u4e4b\u524d\u8865\u52a07\u4e2a\u7a7a\u683c,\u6700\u540e\u4e00\u884c\u8f93\u51fa\u4e3a12345678.12 \u8fd9\u65f6\u5c0f\u6570\u70b9\u5360\u4e00\u4f4d\u3002 20

\u8bb0\u5f97\u91c7\u7eb3\u554a

double\u4e0efloat\u7684\u533a\u522b\u5728\u4e8e\u5728\u5185\u5b58\u4e2d\u5b58\u653e\u6570\u636e\u65f6\u5360\u7528\u7684\u5185\u5b58\u4e0d\u4e00\u6837\uff0c\u524d\u80058\u5b57\u8282\uff0c\u540e\u80054\u5b57\u8282\uff0c\u4e5f\u5c31\u662f\u524d\u8005\u4fdd\u5b58\u7684\u5c0f\u6570\u4f4d\u6570\u6bd4\u540e\u8005\u591a\u4e00\u500d\u3002
\u4e3e\u4f8b\u8bf4\u660e\u5bf9\u4e8e1.9999996666\uff0c\u6309\u7167float\u8f93\u51fa\uff0c\u7ed3\u679c\u53ef\u80fd\u4e3a1.999999\uff0c\u5982\u679c\u6309\u7167double\u53ef\u80fd\u4e3a1.999999\u3002\u56e0\u4e3aC\u8bed\u8a00\u9ed8\u8ba4\u8f93\u51fa\u5c0f\u6570\u4f4d\u6570\u90fd\u53d66\u4f4d\uff0c\u8fd9\u65f6\u5019\u770b\u8d77\u6765\u6ca1\u6709\u533a\u522b\uff0c\u4f46\u662f\u5982\u679c\u4f60\u8fdb\u884c\u683c\u5f0f\u63a7\u5236\uff0c\u6bd4\u5982\u4f7f\u7528%.10\uff0c\u5373\u5c0f\u6570\u4fdd\u755910\u4f4d\uff0cfloat\u8f93\u51fa\u7ed3\u679c\u4e3a1.9999990000\uff0c\u800cdouble\u8f93\u51fa\u7ed3\u679c\u5219\u4e3a1.9999996666

float 为单精度,有效数字为6~7double 为双精度,有效数字为15~16 但他们在输出时,小数点后都有6位小数。例如3.123456
但是在格式化输出时例外。如:
main()
{
int a=15;
float b=123.1234567;
double c=12345678.1234567;
char d='p';
printf("a=%d,%5d,%o,%x\n",a,a,a,a);
printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);
printf("c=%lf,%f,%8.4lf\n",c,c,c);
printf("d=%c,%8c\n",d,d);
printf("e=%11.2",c);
}
本例第七行中以四种格式输出整型变量a的值,其中“%5d ”要求输出宽度为5,而a值为15只有两位故补三个空格。 第八行中以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。“%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。第九行输出双精度实数,“%8.4lf ”由于指定精度为4位故截去了超过4位的部分。第十行输出字符量d,其中“%8c ”指定输出宽度为8故在输出字符p之前补加7个空格,最后一行输出为12345678.12 这时小数点占一位。

float 为单精度,有效数字为6~7double 为双精度,有效数字为15~16 但他们在输出时,小数点后都有6位小数
小数是有精度限制的,像3.99999这类的没办法精确表现出了,只是一个近似的数

  • c璇█float鍜double鐨勫尯鍒
    绛旓細c璇█float鍜double鐨勫尯鍒涓嬶細1銆佺簿搴︿笉涓鏍凤紝float鏄崟绮惧害锛宒ouble鏄弻绮惧害锛2銆佽〃绀哄皬鏁扮殑鑼冨洿涓嶄竴鏍凤紝double鑳借〃绀虹殑鑼冨洿姣攆loat澶э紱3銆乨ouble鍦ㄥ唴瀛樹腑锛屽崰8涓瓧鑺傦紝float鍦ㄥ唴瀛樹腑锛屽崰4涓瓧鑺傘%f榛樿淇濈暀6浣嶅皬鏁帮紝涓嶈冻浣嶄互0琛ラ綈锛岃秴杩囧叚浣嶆寜鍥涜垗浜斿叆鐨勬柟娉曚繚鐣6浣嶏紝鑻ユ兂杈撳嚭鎸囧畾浣嶆暟锛屽湪鏍煎紡鍖...
  • c璇█涓璬ouble鍜宖loat鐨勭敤娉
    绛旓細float鏄C璇█涓殑涓绉嶅崟绮惧害(singleprecision)娴偣鏁版牸寮忥紝鍏跺瓨鍌ㄧ┖闂村崰鐢4bit锛岃兘澶熻〃绀哄嚭鍗佽繘鍒跺皬鏁扮簿搴﹁揪鍒7~8浣嶏紝鍗佸叚杩涘埗灏忔暟绮惧害杈惧埌15浣嶃傚畠鍙崰鐢ㄦ湁闄愮殑鍐呭瓨绌洪棿锛屾瘮鍙岀簿搴double绫诲瀷灏戜簡涓鍗婏紝浣嗕娇鐢╢loat绫诲瀷璁$畻涓や釜瀹炴暟杩愮畻鍙兘寰楀嚭涓嶆纭殑缁撴灉锛岄傜敤浜庡瓨鍌ㄥ疄闄呮暟鎹椂瑕佹眰杈冧綆鐨勭簿搴︼紝濡傜粯鍥惧拰...
  • float鍜宒ouble鐨勫尯鍒妇渚
    绛旓細double鏄C璇█鐨涓涓叧閿瓧锛屼唬琛ㄥ弻绮惧害娴偣鍨嬶紝鍗8涓瓧鑺傚唴瀛樼┖闂达紝鍏舵暟鍊艰寖鍥翠负鈥1.7E-308锝1.7E+308鈥濓紝鍙岀簿搴﹀畬鍏ㄤ繚璇佺殑鏈夋晥鏁板瓧鏄15浣嶏紝16浣嶅彧鏄儴鍒嗘暟鍊兼湁淇濊瘉銆C璇█涓锛float鍜宒ouble閮藉睘浜庢诞鐐规暟銆傚尯鍒湪浜庯細double鎵琛ㄧず鐨勮寖鍥达紝鏁存暟閮ㄥ垎鑼冨洿澶т簬float锛屽皬鏁伴儴鍒嗭紝绮惧害涔熼珮浜巉loat銆備妇涓緥瀛愶細...
  • float鍦C璇█涓鏄粈涔堟剰鎬?鍏蜂綋鐨勩double鍛?璋㈣阿!
    绛旓細float鍦C璇█涓鏄 鍗曠簿搴︽诞鐐规暟锛 double 鏄弻绮惧害娴偣鏁般傚畠浠簿搴︿笉鍚岋紝鑳借〃绀虹殑鏁板艰寖鍥村ぇ灏忎笉鍚屻傚崟绮惧害娴偣鏁帮紝4瀛楄妭锛 瀛楅暱32浣嶏紝鏈変竴浣嶇鍙蜂綅锛屾寚鏁颁綅鍏8浣嶏紝灏炬暟鍏23浣嶃 鎸囨暟鑳藉琛ㄧず鐨勬寚鏁拌寖鍥翠负-128~127銆俧loat鐨勭簿搴︿负6~7浣嶆湁鏁堟暟瀛椼 float鐨勮寖鍥翠负-2^128 ~ +2^128锛屼篃鍗-3...
  • double鍜宖loat鐨勫尯鍒
    绛旓細float鐨勮〃杈惧紡锛1bit锛堢鍙蜂綅锛+8bits锛堟寚鏁颁綅锛+23bits锛堝熬鏁颁綅锛塪ouble鐨勮〃杈惧紡锛1bit锛堢鍙蜂綅锛+11bits锛堟寚鏁颁綅锛+52bits锛堝熬鏁颁綅锛塪ouble绫诲瀷 C璇█涓殑double鏄竴绉嶆暟鎹被鍨嬶紝瀹冧唬琛ㄧ潃鍙岀簿搴︽诞鐐规暟銆傚湪璁$畻鏈虹瀛︿腑锛屾诞鐐规暟鏄竴绉嶇敤浜庤〃绀哄疄鏁扮殑鏁版嵁绫诲瀷锛岃屽弻绮惧害娴偣鏁板垯鏄竴绉嶆洿楂樼簿搴︾殑娴偣鏁...
  • C璇█float鍜double鏈変粈涔堝尯鍒
    绛旓細1.鍏抽敭瀛楋細鍦C璇█涓锛float鏄竴涓叧閿瓧锛岃〃绀哄崟绮惧害娴偣鏁般傝屽湪C++涓紝float涔熸槸涓涓叧閿瓧锛屼絾瀹冨彲浠ヨ〃绀哄崟绮惧害鎴栧弻绮惧害娴偣鏁帮紝鍏蜂綋鍙栧喅浜庣紪璇戝櫒鐨勫疄鐜般侰++涓病鏈夊畾涔塺eal杩欎釜鍏抽敭瀛椼2.瀛樺偍绌洪棿锛氬湪C璇█涓紝float閫氬父鍗犵敤4涓瓧鑺傦紝鑰double鍒欏崰鐢8涓瓧鑺傘傚湪C++涓紝float閫氬父鍗犵敤4涓瓧鑺傦紝鑰...
  • c璇█float鍜double鐨勫尯鍒槸浠涔?
    绛旓細f鎸float鍨嬶紝c涓殑瀹炴暟榛樿涓double锛岄櫎闈炲悗闈㈣窡鐫f鐨勬墠鎸噁loat銆傝嫢鎶婂畠璧嬬粰涓涓猣loat鍨嬪彉閲忓垯浼氭湁绮惧害鎹熷け鐨勭紪璇戣鍛婃彁绀猴紝0.5f鐨勬剰鎬濇槸鍛婅瘔缂栬瘧鍣ㄥ皢杩欎釜0.5鎸塮loat鍨嬪鐞嗐傝繖閲岀殑0.5f鍜0.5F娌℃湁鍖哄埆銆備緥濡0xa5銆0Xa5銆0xA5銆0XA5瀹屽叏鐩稿悓銆
  • c璇█涓璬ouble鍜宖loat鎬庝箞鐢
    绛旓細1銆佸弻绮惧害娴偣鍨嬫暟鎹敤%lf杈撳嚭銆傚洜涓double鏄8涓瓧鑺傜殑锛float鏄4涓瓧鑺傜殑锛%f 鐨勬牸寮忓氨鏄4涓瓧鑺傜殑锛岃 %lf 灏辨槸8涓瓧鑺傜殑銆 渚嬪锛歱rintf("%lf\n",x);2銆乻hort 鍗犵敤鍐呭瓨绌洪棿2涓瓧鑺傦紝鐭暣鍨嬫暟鎹敤%d杈撳嚭 渚嬪锛歱rintf("%d\n",a);渚嬪锛歩nclude <stdio.h> int main(){double x;sh...
  • c璇█float鍜double鐨勫尯鍒
    绛旓細C璇█涓璮loat鍜double鍚勪唬琛ㄤ粈涔堝惈涔夛紝鏈変粈涔堝尯鍒紵 15 璋㈣阿鎸囨暀 閭d箞鍝簺灏忔暟鐢Float,鍝簺鐢Double,璋㈣阿鎸囨暀 閽﹀ぉ鎰 | 娴忚 8967 娆 鎺ㄨ崘浜2016-07-06 18:59:50鏈浣崇瓟妗 閮藉睘浜庢诞鐐规暟 涔熷氨鏄皬鏁 浣嗙簿搴︿笉鍚 鍙互鍙栧肩殑鑼冨洿double瑕佹瘮float澶 鎵鍗犲唴瀛樹綅鏁颁篃涓嶅悓 32浣嶆満鏉ヨ float 鍗 4瀛楄妭 ...
  • C璇█涓殑double鍜宖loat
    绛旓細double涓巉loat鐨勫尯鍒湪浜庡湪鍐呭瓨涓瓨鏀炬暟鎹椂鍗犵敤鐨勫唴瀛樹笉涓鏍凤紝鍓嶈8瀛楄妭锛屽悗鑰4瀛楄妭锛屼篃灏辨槸鍓嶈呬繚瀛樼殑灏忔暟浣嶆暟姣斿悗鑰呭涓鍊嶃備妇渚嬭鏄庡浜1.9999996666锛屾寜鐓loat杈撳嚭锛岀粨鏋滃彲鑳戒负1.999999锛屽鏋滄寜鐓ouble鍙兘涓1.999999锛岃繖鏄负浠涔堬紝鍥犱负C璇█榛樿杈撳嚭灏忔暟浣嶆暟閮藉彇6浣嶏紝杩欐椂鍊欑湅璧锋潵娌℃湁鍖哄埆锛屼絾鏄鏋...
  • 扩展阅读:warning c4305 ... c语言从double到float截断 ... double int float ... c语言中double怎么用 ... 0.3是float还是double ... 怎么判断double和float ... c语言long double ... c语言do while循环 ... c语音中double和float ...

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