十進制浮点數的表示方式
在 ざい 電腦 でんのう 科學 かがく 中 なか ,浮點數 すう 運算 うんざん (Floating-point arithmetic)是 ぜ 一 いち 種 しゅ 用 よう 浮點 (英語 えいご :floating point ,縮寫 しゅくしゃ 為 ため FP)方式 ほうしき 表示 ひょうじ 實數 じっすう 的 てき 運算 うんざん 方式 ほうしき 。浮點是 ぜ 一種對於實數的近似值數值表現法,由 よし 一 いち 个有效 ゆうこう 數字 すうじ (即 そく 尾 お 数 すう )加 か 上 じょう 冪 べき 數 すう 來 らい 表示 ひょうじ ,通常 つうじょう 是 これ 乘 じょう 以某个基数 きすう 的 てき 整数 せいすう 次 じ 指數 しすう 得 え 到 いた 。以這種 しゅ 表示法 ひょうじほう 表示 ひょうじ 的 てき 數 すう 值,稱 たたえ 為 ため 浮点數 すう (floating-point number )。浮點數 すう 運算 うんざん 运算通常 つうじょう 伴 とも 随 ずい 着 ぎ 因 いん 为无法 ほう 精 せい 确表示 ひょうじ 而进行 ぎょう 的 てき 近似 きんじ 或 ある 舍 しゃ 入 いれ 。
計算 けいさん 機 き 使用 しよう 浮點數 すう 運算 うんざん 的 てき 主因 しゅいん ,在 ざい 於電腦 でんのう 使用 しよう 二 に 進 しん 位 い 制 せい 的 てき 運算 うんざん 。例 れい 如:4÷2=2,4=100(2) 、2=010(2) ,在 ざい 二 に 進 しん 位相 いそう 當 とう 於退一 いち 位 い 數 すう 。則 のり 1.0÷2=0.5=0.1(2) 也就是 ぜ
1
2
{\displaystyle {\frac {1}{2}}}
。依 よ 此類推 るいすい 二 に 進 しん 位 い 的 てき 0.01(2) 就是十 じゅう 進 しん 位 い
1
2
2
{\displaystyle {\frac {1}{2^{2}}}}
=
1
4
{\displaystyle {\frac {1}{4}}}
=0.25。由 よし 於十 じゅう 進 しん 位 い 制 せい 無法 むほう 準 じゅん 確 かく 換算 かんさん 成 なり 二 に 進 しん 位 い 制 せい 的 てき 部分 ぶぶん 小數 しょうすう ,如0.1,因 いん 此只能 のう 使用 しよう 近似 きんじ 值的方式 ほうしき 表 ひょう 達 たち 。
这种表示 ひょうじ 方法 ほうほう 类似于基数 すう 为10的 てき 科学 かがく 记数法 ほう ,在 ざい 計算 けいさん 機 き 上 じょう ,通常 つうじょう 使用 しよう 2為 ため 基數 きすう 的 てき 幂數來 らい 表示 ひょうじ 。一 いち 个浮点数 てんすう a 由 よし 两个数 すう m 和 わ e 来 らい 表示 ひょうじ :a = m × be 。在 ざい 任意 にんい 一个这样的系统中,可 か 选择一 いち 个基數 きすう b (记数系 けい 统的基 もと )和 わ 精度 せいど p (即 そく 使用 しよう 多少 たしょう 位 い 来 らい 存 そん 储)。m (即 そく 尾 お 數 すう )是 ぜ 形 がた 如±d. ddd...ddd的 てき p位 い 数 すう (每 まい 一位是一个介于0到 いた b-1之 これ 间的整数 せいすう ,包括 ほうかつ 0和 わ b-1)。如果m 的 てき 第 だい 一 いち 位 い 是非 ぜひ 0整数 せいすう ,m 称 しょう 作 さく 正 せい 规化的 てき 。有 ゆう 一些描述使用一个单独的符号位(s 代表 だいひょう +或 ある 者 もの -)来 らい 表示 ひょうじ 正 せい 负,这样m 必须是正 ぜせい 的 てき 。e 是 ぜ 指数 しすう 。
這種表示法 ひょうじほう 的 てき 設計 せっけい ,來 き 自 じ 於對於值的 てき 表現 ひょうげん 範圍 はんい ,與 あずか 精密 せいみつ 度 ど 之 これ 間 あいだ 的 てき 取捨 しゅしゃ :可 か 以在某 ぼう 个固定 こてい 长度的 てき 存 そん 储空间内表示 ひょうじ 出 で 某 ぼう 個 こ 實數 じっすう 的 てき 近似 きんじ 值。例 れい 如,一个指数范围为±4的 てき 4位 い 十 じゅう 进制 浮点数 すう 可 か 以用来 らい 表示 ひょうじ 43210,4.321或 ある 0.0004321,但 ただし 是 ぜ 没 ぼつ 有 ゆう 足 あし 够的精度 せいど 来 らい 表示 ひょうじ 432.123和 わ 43212.3(必须近似 きんじ 为432.1和 わ 43210)。当然 とうぜん ,实际使用 しよう 的 てき 位 い 数 すう 通常 つうじょう 远大于4。
此外,浮点数 すう 表示法 ひょうじほう 通常 つうじょう 还包括 ほうかつ 一些特别的数值:+∞和 わ −∞(正 せい 负无穷大)以及NaN('Not a Number')。无穷大用 おおゆう 于数太 ふと 大 だい 而无法 ほう 表示 ひょうじ 的 てき 时候,NaN则指示 しじ 非 ひ 法 ほう 操作 そうさ 或 ある 者 もの 无法定 ほうてい 义的结果。
其中,无穷大 だい ,可 か 表示 ひょうじ 为inf,在 ざい 内 ない 存 そん 中 ちゅう 的 てき 值是阶码为全1,尾 び 数 すう 全 ぜん 0。而NaN在 ざい 内 ない 存 そん 中 ちゅう 的 てき 值则是 ぜ 阶码全 ぜん 1,尾 び 数 すう 不全 ふぜん 0。
计算机 つくえ 的 てき 浮点数 すう [ 编辑 ]
浮点指 ゆび 的 てき 是 ぜ 带有小数 しょうすう 的 てき 数 すう 值,浮点运算即 そく 是 ぜ 小数 しょうすう 的 てき 四 よん 则运算 さん ,常用 じょうよう 来 らい 测量电脑运算速度 そくど 。大部 たいぶ 份计算 さん 机 つくえ 采 さい 用 よう 二 に 進 しん 制 せい (b=2)的 てき 表示 ひょうじ 方法 ほうほう 。位 くらい (bit)是 ぜ 衡量浮点数 すう 所 しょ 需存储空间的单位,通常 つうじょう 为32位 い 或 ある 64位 い ,分 ふん 别被叫 さけべ 作 づく 单精度 せいど 和 わ 双 そう 精度 せいど 。有 ゆう 一些计算机提供更大的浮点数,例 れい 如英 えい 特 とく 尔公司 こうし 的 てき 浮点运算单元Intel8087协处理 り 器 き (以及其被集成 しゅうせい 进x86 处理器 き 中 ちゅう 的 てき 后 きさき 代 だい 产品)提供 ていきょう 80位 い 长的浮点数 すう ,用 よう 于存储浮点 てん 运算的中 てきちゅう 间结果 はて 。还有一些系统提供128位 い 的 てき 浮点数 すう (通常 つうじょう 用 よう 软件实现)。
浮点数 すう 的 てき 標準 ひょうじゅん [ 编辑 ]
在 ざい 電腦 でんのう 使用 しよう 的 てき 浮点数 すう 被 ひ 电气电子工程 こうてい 师协会 かい (IEEE)規範 きはん 化 か 為 ため IEEE 754 。
π ぱい 的 てき 值可以表示 ひょうじ 为π ぱい = 3.1415926...10 (十 じゅう 进制)。当 とう 在 ざい 一 いち 个支持 しじ 17位 い 尾 お 数 すう 的 てき 计算机 つくえ 中 ちゅう 表示 ひょうじ 时,它会变为0.11001001000011111 × 22 。
浮點數 すう 運算 うんざん [ 编辑 ]
為 ため 了 りょう 方便 ほうべん 呈 てい 現 げん ,容易 ようい 閱讀,以下 いか 的 てき 例 れい 子 こ 會 かい 用 よう 十 じゅう 進 しん 制 せい ,有效 ゆうこう 位 い 數 すう 7位 い 數 すう 的 てき 浮點數 すう ,也就是 ぜ IEEE 754 decimal32格式 かくしき ,其原 そのはら 理 り 不 ふ 會 かい 隨 ずい 進 しん 制 せい 或 ある 是 ぜ 有效 ゆうこう 位 い 數 すう 而變。此處 ここ 的 てき s 表示 ひょうじ 尾 お 數 すう (有效 ゆうこう 數字 すうじ ),而e 表示 ひょうじ 指數 しすう 。
加減 かげん 法 ほう [ 编辑 ]
處理 しょり 浮點數 すう 加法 かほう 的 てき 簡單 かんたん 作法 さほう 是 ぜ 將 しょう 二個浮點數調整到有相同的指數。在 ざい 以下 いか 例 れい 子中 こなか ,第 だい 二個數的小數點左移了三位,使 つかい 二 に 者 しゃ 的 てき 指數 しすう 相 しょう 同 どう ,之 これ 後 ご 即 そく 可 か 進行 しんこう 一般 いっぱん 的 てき 加法 かほう 運算 うんざん :
123456.7 = 1.234567 × 10^5
101.7654 = 1.017654 × 10^2 = 0.001017654 × 10^5
因 いん 此
123456.7 + 101.7654 = (1.234567 × 10^5) + (1.017654 × 10^2)
= (1.234567 × 10^5) + (0.001017654 × 10^5)
= (1.234567 + 0.001017654) × 10^5
= 1.235584654 × 10^5
若 わか 用 よう e和 わ s來 らい 表示 ひょうじ
e=5; s=1.234567 (123456.7)
+ e=2; s=1.017654 (101.7654)
e=5; s=1.234567
+ e=5; s=0.001017654 (移 うつり 位 い 後 ご )
--------------------
e=5; s=1.235584654 (實際 じっさい 的 てき 和 わ :123558.4654)
這是真實 しんじつ 的 てき 結果 けっか ,二 に 個 こ 數字 すうじ 真正 しんせい 的 てき 和 わ ,之 これ 後會 こうかい 再 さい 四捨五入到七位有效位數,若 わか 有 ゆう 需要 じゅよう 的 てき 話 ばなし ,會 かい 再 さい 進行 しんこう 正規 せいき 化 か ,其結果 けっか 為 ため
e=5; s=1.235585 (最後 さいご 答案 とうあん :123558.5)
加數 かすう 的 てき 最低 さいてい 三 さん 位 い 數 すう (654)沒 ぼつ 有 ゆう 出現 しゅつげん 在 ざい 結果 けっか 中 ちゅう ,這稱為 ため 捨入誤差 ごさ 。在 ざい 一些極端的例子中,二個浮點數的和可能和其中的被加數或是加數相等:
e=5; s=1.234567
+ e=−3; s=9.876543
e=5; s=1.234567
+ e=5; s=0.00000009876543 (移 うつり 位 い 後 ご )
----------------------
e=5; s=1.23456709876543 (真正 しんせい 的 てき 和 わ )
e=5; s=1.234567 (四捨五入 ししゃごにゅう 及正規 せいき 化 か 後 ご )
在 ざい 上述 じょうじゅつ 的 てき 例 れい 子中 こなか ,為 ため 了 りょう 要 よう 有正 ありまさ 確 かく 的 てき 四捨五入 ししゃごにゅう 結果 けっか ,在 ざい 二數指數差距很大時,要 よう 增加 ぞうか 許多 きょた 位 い 數 すう 才 さい 有正 ありまさ 確 かく 的 てき 結果 けっか 。不 ふ 過 か ,在 ざい 二 に 位 い 制 せい 的 てき 加減 かげん 法 ほう 中 ちゅう ,利用 りよう 一 いち 個 こ guard位 い 元 もと 、一 いち 個 こ rounding位 い 元 もと 以及一 いち 個 こ 額 がく 外的 がいてき sticky位 い 元 もと ,就可以有正確 せいかく 的 てき 結果 けっか [1] [2] :218–220 。
另一 いち 個 こ 失 しつ 去 さ 有效 ゆうこう 數字 すうじ 的 てき 情 じょう 形 がた 出現 しゅつげん 在 ざい 二個幾乎相等的數字相減時。在 ざい 以下 いか 的 てき 例 れい 子中 こなか ,e = 5; s = 1.234571和 わ e = 5; s = 1.234567是 ぜ 有理數 ゆうりすう 123457.1467和 わ 123456.659的 てき 近似 きんじ 值。
e=5; s=1.234571
− e=5; s=1.234567
----------------
e=5; s=0.000004
e=−1; s=4.000000 (四捨五入 ししゃごにゅう 及正規 せいき 化 か 後 ご )
浮點數 すう 的 てき 差 さ 可 か 以精確 かく 的 てき 計算 けいさん ,如同Sterbenz引理 所 ところ 說明 せつめい 的 てき ,就算是 ぜ 因 いん 為 ため 漸進 ぜんしん 式 しき 下 か 溢位 而出現下 げんか 溢位也是一 いち 樣 よう 。不 ふ 過 か ,原 はら 來 らい 二 に 個 こ 數 すう 的 てき 差 さ 是 ぜ e = −1; s = 4.877000,和 わ 浮點數 すう 計算 けいさん 結果 けっか e = −1; s = 4.000000之 これ 間 あいだ 差 さ 了 りょう 超過 ちょうか 20%。在 ざい 極端 きょくたん 的 てき 例 れい 子中 こなか ,甚至所有 しょゆう 的 てき 有效 ゆうこう 數字 すうじ 都會 とかい 不 ふ 見 み [1] [3] 。上述 じょうじゅつ 的 てき 灾难性 せい 抵消 說明 せつめい 了 りょう ,假設 かせつ 計算 けいさん 結果 けっか 的 てき 每 ごと 一 いち 位 い 數 すう 都 と 有意義 ゆういぎ ,這個想 そう 法 ほう 很危險 けわし 。這類誤差 ごさ 的 てき 處理 しょり 及修正 しゅうせい 是 ぜ 數 かず 值分析 ぶんせき 中 なか 的 てき 主題 しゅだい 之 の 一 いち 。
乘除 じょうじょ 法 ほう [ 编辑 ]
若 わか 要 よう 進行 しんこう 乘法 じょうほう ,將 はた 有效 ゆうこう 數字 すうじ 相乘 そうじょう ,指數 しすう 相 しょう 加 か ,再 さい 進行 しんこう 四捨五入及正規化即可。
e=3; s=4.734612
× e=5; s=5.417242
-----------------------
e=8; s=25.648538980104 (真實 しんじつ 乘 じょう 積 せき )
e=8; s=25.64854 (四捨五入 ししゃごにゅう 後 ご )
e=9; s=2.564854 (正規 せいき 化 か )
而除法會 ほうえ 將 はた 被除數 ひじょすう 和 わ 除數 じょすう 的 てき 有效 ゆうこう 數字 すうじ 相 しょう 除 じょ ,二 に 者 しゃ 的 てき 指數 しすう 相 しょう 減 げん ,再 さい 進行 しんこう 四捨五入 ししゃごにゅう 及正規 せいき 化 か 。
乘除 じょうじょ 法 ほう 不 ふ 會 かい 有 ゆう 抵消或 ある 是 ぜ 某 ぼう 一 いち 數字 すうじ 被 ひ 吸收 きゅうしゅう 的 てき 問題 もんだい ,不 ふ 過 か 仍會出現 しゅつげん 一 いち 些小誤差 ごさ ,若 わか 連續 れんぞく 運算 うんざん ,誤差 ごさ 會 かい 變 へん 大 だい [1] 。實務 じつむ 上 じょう ,要 よう 進行 しんこう 上述 じょうじゅつ 運算 うんざん 的 てき 數 すう 位 い 邏輯可能 かのう 會 かい 相當 そうとう 的 てき 複雜 ふくざつ (像 ぞう 是 ぜ 布 ぬの 斯乘法 ほう 算法 さんぽう 以及除法 じょほう 器 き )。
准 じゅん 确性[ 编辑 ]
由 よし 于浮点数 てんすう 不能 ふのう 表 ひょう 达所有 しょゆう 实数 ,浮点运算与 あずか 相 あい 应的数学 すうがく 运算有 ゆう 所 しょ 差 さ 异,有 ゆう 时此差 さ 异极为显著 ちょ 。
比 ひ 如,二进制浮点数不能表达0.1和 わ 0.01,0.1的 てき 平方 へいほう 既 すんで 不 ふ 是 ぜ 准 じゅん 确的0.01,也不是 ぜ 最 さい 接近 せっきん 0.01的 てき 可 か 表 ひょう 达的数 すう 。单精度 ど (24比 ひ 特 とく )浮点数表示 すうひょうじ 0.1的 てき 结果为
e
=
−
4
{\displaystyle e=-4}
,
s
=
110011001100110011001101
(
2
)
{\displaystyle s=110011001100110011001101_{(2)}}
,即 そく
0.100000001490116119384765625
此数的 てき 平方 ひらかた 是 ただし
0.010000000298023226097399174250313080847263336181640625
但 ただし 最 さい 接近 せっきん 0.01的 てき 可 か 表 ひょう 达的数 すう 是 ぜ
0.009999999776482582092285156250
浮点数也 かずや 不能 ふのう 表 ひょう 达圆周 しゅう 率 りつ
π ぱい
{\displaystyle \pi }
,所以 ゆえん
tan
π ぱい
2
{\displaystyle \tan {\frac {\pi }{2}}}
不等 ふとう 于正无穷,也不会 かい 溢出。下面 かめん 的 てき C语言代 だい 码
double pi = 3.1415926535897932384626433832795 ;
double z = tan ( pi / 2.0 );
的 てき 计算结果为16331239353195370.0,如果用 よう 单精度 せいど 浮点数 すう ,则结果 はて 为−22877332.0。同 どう 样的,
sin
π ぱい
≠
0
{\displaystyle \sin \pi \neq 0}
。
由 よし 于浮点数 てんすう 计算过程中 ちゅう 丢失了 りょう 精度 せいど ,浮点运算的 てき 性 せい 质与数学 すうがく 运算有 ゆう 所 しょ 不同 ふどう 。浮点加法 かほう 和 わ 乘法 じょうほう 不 ふ 符合 ふごう 结合律 りつ 和 わ 分配 ぶんぱい 律 りつ 。
事故 じこ [ 编辑 ]
奔騰 ほんとう 早期 そうき 的 てき 60-100MHz P5 版本 はんぽん 在 ざい 浮點運算 うんざん 單元 たんげん 有 ゆう 一 いち 個 こ 問題 もんだい ,在 ざい 極少 きょくしょう 數 すう 情況 じょうきょう 下 か ,會 かい 導 しるべ 致除法 ほう 運算 うんざん 的 てき 精 せい 確度 かくど 降 くだ 低 てい 。這個缺陷 けっかん 於1994年 ねん 被 ひ 發現 はつげん ,變成 へんせい 如今廣 ひろ 為 ため 人知 じんち 的 てき 奔腾浮点除 じょ 错误 ,同時 どうじ 這一事件 じけん 導 しるべ 致英 えい 特 とく 爾 なんじ 陷 おちい 入 にゅう 巨大 きょだい 的 てき 窘態,建立 こんりゅう 召回計畫 けいかく 來 らい 回收 かいしゅう 有 ゆう 問題 もんだい 的 てき 處理 しょり 器 き 。
相關 そうかん 條目 じょうもく [ 编辑 ]
參考 さんこう 資料 しりょう [ 编辑 ]