網域名稱俱樂部


返回   網域名稱俱樂部 > 電腦與網路技術 > 電腦網路相關技術 > 一般軟體與網路使用討論
論壇幫助 社區 日曆事件 今日新文章 搜尋

回覆
 
主題工具
  #1  
舊 2014-02-27, 10:40 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,059
預設 float和double

想請教一下,float(單精度浮點數)和double(倍精度浮點數)這二個是數學名詞還是電腦名詞?

它們的不同主要在於要占用的記憶體大小不同,是嗎?

書上說,一個char型態是8 bits =1 byte,但int 在16位元的環境下可占16 bits,但在32位元的環境下則占 32bits,那char呢?還是8 bits?
float and double也會隨著環境改變所占記憶體大小嗎?

那我現在64位元的電腦,表示宣告int就可以儲存比-2147483648到2147483647還要再多的數值嗎?

thanks,
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #2  
舊 2014-02-28, 02:14 PM
some some 目前離線
進階會員
 
註冊日期: 2003-09-23
住址: 屏東
文章: 3,612
預設

在於小數後的長度

double 應該不是寫銀行或者國防, 太空等需要更精密運算應該是用不到?
__________________
nice to meet you                   flickr
回覆時引用此篇文章
  #3  
舊 2014-02-28, 09:08 PM
a40136 a40136 目前離線
進階會員
 
註冊日期: 2007-07-01
文章: 261
預設

引用:
作者: 哈啦 查看文章
想請教一下,float(單精度浮點數)和double(倍精度浮點數)這二個是數學名詞還是電腦名詞?

它們的不同主要在於要占用的記憶體大小不同,是嗎?

書上說,一個char型態是8 bits =1 byte,但int 在16位元的環境下可占16 bits,但在32位元的環境下則占 32bits,那char呢?還是8 bits?
float and double也會隨著環境改變所占記憶體大小嗎?

那我現在64位元的電腦,表示宣告int就可以儲存比-2147483648到2147483647還要再多的數值嗎?

thanks,
對於Double, Float Size部分我不是很確定(我記得在不同平台上實做不見得一樣),如果想要比較明確的解,可以去參考IEEE 754內的規範,但其實很多地方沒依照規範在實做。

那最大的差異是? 看底下2段Code就知道了
代碼:
    float a = 1.f / 81;
    float b = 0;
    for (int i = 0; i < 729; ++ i)
            b += a;
    printf("%.7g\n", b);   // prints 9.000023
代碼:
    double a = 1.0 / 81;
    double b = 0;
    for (int i = 0; i < 729; ++ i)
            b += a;
    printf("%.15g\n", b);   // prints 8.99999999999996
雖然Double看起來比較精準,但實際上運行會慢很多。
Int的部分,主要是依照Compiler解釋,如果要準確來說,請使用
uint16_t
uint32_t 這類來定義
回覆時引用此篇文章
回覆


發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼



所有時間均為 +8。現在的時間是 02:21 PM


本站主機由網易虛擬主機代管
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.