以float a=1.0f為例:
(int)a實際上是以浮點數a為引數構造了乙個整型數,該整數的值是1;
(int&)a則是告訴編譯器將a當作整數看(並沒有做任何實質上的轉換),即讀a的記憶體時按照整數來讀取,而不考慮a本來的型別。為1065353216(3f800000的十進位制表示);
(int)&a是將a的位址(16進製制數)轉換為十進位制,沒有什麼實際意義。
問題分析:
(1)float型別中,所儲存的指數字=實際的指數+127,尾數部分為底數的小數部分(底數整數部分應為1,省略不寫)。
特例:float a=0.0f;中0的儲存,指數尾數均為0。
#include #includefloat b=0.0f;執行輸出:using
namespace
std;
intmain()
若改為 float b=1.0f;則結果如下(1065353216是3f800000的十進位制表示)
浮點數小知識點
浮點數只有在能夠表達整數和二次冪的情況下才能不損失。否則如何進行對比可以採取 c fabs a b epsion 目標精度 符號位 階碼 尾數 0 10000110 01100000001000000.等價於 1.01100000010000 2 10000110 2 127 首先將二進位制數進行規...
《強制型別轉化與浮點數的儲存問題》
強制型別轉化 格式 資料型別 表示式 功能 把表示式的值強制轉化為前面所執行的資料型別。例子 int 3.3 2.2 最終值是5 float 6 最終值是6.000000 求1 1 2 1 3.1 100 include void main printf f n sum 輸出結果是 5.187378...
浮點數型別在記憶體之中的儲存方式
3.14159 1e10 浮點數家族包括 float double long double型別。浮點數表示的範圍 float.h中定義 浮點數儲存的例子 int num 9 float pfloat float printf num 的值為 d n num printf pfloat 的值為 f n...