c语言中float和double为什么输出会完全不一样? 为什么C语言中,我用double的结果和float结果不一样

C\u8bed\u8a00\uff0c float double\u8f93\u51fa\u4e0d\u4e00\u6837\uff0c\u6c42\u5927\u795e

\u5f88\u6b63\u5e38\u7684\u561b\uff0c\u6d6e\u70b9\u7684\u5b58\u50a8\u662f\u6309\u7167IEEE754\u6807\u51c6\u7684\u3002\u7b80\u5355\u7684\u8bf4\u5b83\u5185\u90e8\u662f2\u8fdb\u5236\u7684\uff0c63.245 \u6839\u672c\u4e0d\u53ef\u80fd\u75282\u8fdb\u5236\u7684\u6d6e\u70b9\u7cbe\u786e\u8868\u793a\uff0c\u6240\u4ee5\u624d\u4f1a\u6709\u5f88\u5c11\u7684\u8bef\u5dee\u3002\u8fd9\u662f\u6b63\u5e38\u7684\u3002

\u56e0\u4e3a\u5927\u90e8\u5206\u673a\u5668\u4e0a\u9762\uff0cfloat\u662f4\u4e2a\u5b57\u8282\uff0cdouble\u662f8\u4e2a\u5b57\u8282\u3002\u7cbe\u5ea6\u662f\u4e0d\u540c\u7684\u3002

float 和 double 在输出的时候其实都是用%f输出。c语言中,浮点型输出默认都是输出小数后6位。你为什么会认为double会输出到小数后15位呢,我感觉你是认为double的精确度有15位,float的精确度是7位,对吧,其实事实double和float在输出的时候都是默认输出到小数后6位,但是你可以用%m.nf 的格式控制

float的精度和double的精度不同,double的精度高
double类型要用%lf,float类型用%f
你把double类型的值用float类型输入(输出),就会出现溢出。

但是在C语言中不是会默认的把float型转化为double型吗?按道理应该都是15位有效数字

  • float鍦C璇█涓鏄粈涔堟剰鎬?鍏蜂綋鐨勩double鍛?璋㈣阿!
    绛旓細float鍦C璇█涓鏄 鍗曠簿搴︽诞鐐规暟锛 double 鏄弻绮惧害娴偣鏁般傚畠浠簿搴︿笉鍚岋紝鑳借〃绀虹殑鏁板艰寖鍥村ぇ灏忎笉鍚屻傚崟绮惧害娴偣鏁帮紝4瀛楄妭锛 瀛楅暱32浣嶏紝鏈変竴浣嶇鍙蜂綅锛屾寚鏁颁綅鍏8浣嶏紝灏炬暟鍏23浣嶃 鎸囨暟鑳藉琛ㄧず鐨勬寚鏁拌寖鍥翠负-128~127銆俧loat鐨勭簿搴︿负6~7浣嶆湁鏁堟暟瀛椼 float鐨勮寖鍥翠负-2^128 ~ +2^128锛屼篃鍗-3...
  • c璇█float鍜宒ouble鐨勫尯鍒
    绛旓細c璇█float鍜宒ouble鐨勫尯鍒涓嬶細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绫诲瀷璁$畻涓や釜瀹炴暟杩愮畻鍙兘寰楀嚭涓嶆纭殑缁撴灉锛岄傜敤浜庡瓨鍌ㄥ疄闄呮暟鎹椂瑕佹眰杈冧綆鐨勭簿搴︼紝濡傜粯鍥惧拰...
  • C璇█涓鍗曠簿搴︽诞鐐规暟鍜屽弻绮惧害鍒嗗埆濡備綍琛ㄧず?鏈変粈涔堝樊鍒?
    绛旓細double 琛ㄧず鑼冨洿涓-1.7E-308锝1.7E+308銆3銆 绮惧害涓嶅悓銆float鍦ㄨ〃绀哄崄杩涘埗鏃讹紝鏈夋晥鏁板瓧涓6鍒7浣嶃俤ouble鍦ㄨ〃绀哄崄杩涘埗鏃讹紝鏈夋晥鏁板瓧涓15鍒16浣嶃4銆佽緭鍏ヨ緭鍑烘牸寮忎笉鍚屻傚湪C璇█涓锛岃緭鍏ヨ緭鍑烘牸寮忓寲瀛楃涓诧紝float浣跨敤%f锛岃宒ouble浣跨敤%lf銆
  • C璇█涓鐨double鍜宖loat
    绛旓細double涓float鐨勫尯鍒湪浜庡湪鍐呭瓨涓瓨鏀炬暟鎹椂鍗犵敤鐨勫唴瀛樹笉涓鏍凤紝鍓嶈8瀛楄妭锛屽悗鑰4瀛楄妭锛屼篃灏辨槸鍓嶈呬繚瀛樼殑灏忔暟浣嶆暟姣斿悗鑰呭涓鍊嶃備妇渚嬭鏄庡浜1.9999996666锛屾寜鐓loat杈撳嚭锛岀粨鏋滃彲鑳戒负1.999999锛屽鏋滄寜鐓ouble鍙兘涓1.999999锛岃繖鏄负浠涔堬紝鍥犱负C璇█榛樿杈撳嚭灏忔暟浣嶆暟閮藉彇6浣嶏紝杩欐椂鍊欑湅璧锋潵娌℃湁鍖哄埆锛屼絾鏄鏋...
  • double鍜宖loat鐨鍖哄埆
    绛旓細float鐨勮〃杈惧紡锛1bit锛堢鍙蜂綅锛+8bits锛堟寚鏁颁綅锛+23bits锛堝熬鏁颁綅锛double鐨勮〃杈惧紡锛1bit锛堢鍙蜂綅锛+11bits锛堟寚鏁颁綅锛+52bits锛堝熬鏁颁綅锛塪ouble绫诲瀷 C璇█涓鐨刣ouble鏄竴绉嶆暟鎹被鍨嬶紝瀹冧唬琛ㄧ潃鍙岀簿搴︽诞鐐规暟銆傚湪璁$畻鏈虹瀛︿腑锛屾诞鐐规暟鏄竴绉嶇敤浜庤〃绀哄疄鏁扮殑鏁版嵁绫诲瀷锛岃屽弻绮惧害娴偣鏁板垯鏄竴绉嶆洿楂樼簿搴︾殑娴偣鏁...
  • C璇█float鍜宒ouble鏈変粈涔堝尯鍒
    绛旓細1.鍏抽敭瀛楋細鍦C璇█涓锛float鏄竴涓叧閿瓧锛岃〃绀哄崟绮惧害娴偣鏁般傝屽湪C++涓紝float涔熸槸涓涓叧閿瓧锛屼絾瀹冨彲浠ヨ〃绀哄崟绮惧害鎴栧弻绮惧害娴偣鏁帮紝鍏蜂綋鍙栧喅浜庣紪璇戝櫒鐨勫疄鐜般侰++涓病鏈夊畾涔塺eal杩欎釜鍏抽敭瀛椼2.瀛樺偍绌洪棿锛氬湪C璇█涓紝float閫氬父鍗犵敤4涓瓧鑺傦紝鑰double鍒欏崰鐢8涓瓧鑺傘傚湪C++涓紝float閫氬父鍗犵敤4涓瓧鑺傦紝鑰...
  • 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...
  • float鍜宒ouble鐨鍖哄埆涓句緥
    绛旓細C璇█涓锛float鍜宒ouble閮藉睘浜庢诞鐐规暟銆傚尯鍒湪浜庯細double鎵琛ㄧず鐨勮寖鍥达紝鏁存暟閮ㄥ垎鑼冨洿澶т簬float锛屽皬鏁伴儴鍒嗭紝绮惧害涔熼珮浜巉loat銆備妇涓緥瀛愶細鍦嗗懆鐜3.1415926535 杩欎釜鏁板瓧锛屽鏋滅敤float鏉ヨ〃绀猴紝鏈澶氬彧鑳界簿纭埌灏忔暟鐐瑰悗闈㈢殑6浣嶃傝宒ouble澶х害鑳界簿纭埌灏忔暟鐐瑰悗闈㈢殑15浣嶅乏鍙炽傚叿浣撶簿纭埌鍑犱綅锛岃窡鎵鐢ㄧ殑缂栬瘧鍣ㄦ湁鍏筹紝...
  • c璇█float鍜宒ouble鐨勫尯鍒槸浠涔?
    绛旓細f鎸float鍨嬶紝c涓殑瀹炴暟榛樿涓double锛岄櫎闈炲悗闈㈣窡鐫f鐨勬墠鎸噁loat銆傝嫢鎶婂畠璧嬬粰涓涓猣loat鍨嬪彉閲忓垯浼氭湁绮惧害鎹熷け鐨勭紪璇戣鍛婃彁绀猴紝0.5f鐨勬剰鎬濇槸鍛婅瘔缂栬瘧鍣ㄥ皢杩欎釜0.5鎸塮loat鍨嬪鐞嗐傝繖閲岀殑0.5f鍜0.5F娌℃湁鍖哄埆銆備緥濡0xa5銆0Xa5銆0xA5銆0XA5瀹屽叏鐩稿悓銆
  • 扩展阅读:0.3是float还是double ... c语言中float和double区别 ... double int float ... 4.2是float还是double ... c语言double和float的输出 ... float和double输入和输出 ... c语言float转换为double ... 怎么判断double和float ... c语言默认double还是float ...

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