SiteMap

2013年4月26日金曜日

為什麼要給浮點數型態的變數指定一個值的時候要加上f

為什麼要給浮點數型態的變數指定一個值的時候要加上f

因為通常該系統都是預設一旦使用浮點數的時候, 先使用Double型態



讓我們來看下面這段程式碼

        float a = 0;
        a = 0.1;

根據編譯器的不同, 有的會跟你說這可能有問題, 然後給予放行編譯
有的會給你一的大XX, 或是一條紅線, 其他甚麼警告訊息之類的, 然後不給編譯

但是同樣的是, "這可能會有問題".
好,問題在哪裡,
上面提到的"使用浮點數的時候, 先使用Double型態"

用在誰身上?? 答案就是 0.1
流程是這樣的
系統先產生一個 Double型態的值0.1
接著程式碼要求把 0.1指派給 float型態的變數
型態不符合當然會出問題

出甚麼問題??
大家都知道
浮點數 float 使用4個位元組
倍精度浮點數 double 使用8個位元組
 float 轉 double 是把 8個位元組砍成 4個位元組
萬一砍掉的位元組裡面有資料呢 ~~<(0.0)>~~
天知道啦 Q.Q

0 件のコメント: