(Translated by https://www.hiragana.jp/)
浮点数运算 - 维基百科,自由的百科全书 とべ转到内容ないよう

浮点すう运算

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
十進制浮点數的表示方式

ざい電腦でんのう科學かがくなか浮點すう運算うんざん(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)也就類推るいすいしんてき0.01(2)就是じゅうしん==0.25。よしじゅうしんせい無法むほうじゅんかく換算かんさんなりしんせいてき部分ぶぶん小數しょうすう,如0.1,いん此只のう使用しよう近似きんじ值的方式ほうしきひょうたち

这种表示ひょうじ方法ほうほう类似于基すう为10てき科学かがく记数ほうざい計算けいさんじょう通常つうじょう使用しよう2ため基數きすうてき幂數らい表示ひょうじいち个浮点数てんすうaよし两个すうmeらい表示ひょうじa = m × beざい任意にんい一个这样的系统中,选择いち基數きすうb(记数けい统的もと精度せいどpそく使用しよう多少たしょうらいそん储)。mそくすうえいSignificandがた如±d.ddd...dddてきpすうまい一位是一个介于0いたb-1これ间的整数せいすう包括ほうかつ0b-1)。如果mてきだいいち是非ぜひ0整数せいすうmしょうさくせい规化てきゆう一些描述使用一个单独的符号位(s 代表だいひょう+あるもの-)らい表示ひょうじせい负,这样m必须是正ぜせいてきe指数しすう

這種表示法ひょうじほうてき設計せっけい於對於值てき表現ひょうげん範圍はんいあずか精密せいみつこれあいだてき取捨しゅしゃ以在ぼう固定こてい长度てきそん储空间内表示ひょうじぼう實數じっすうてき近似きんじ值。れい如,一个指数范围为±4てき4じゅう进制浮点すう以用らい表示ひょうじ43210,4.321ある0.0004321,ただしぼつゆうあし够的精度せいどらい表示ひょうじ432.12343212.3(必须近似きんじ为432.143210)。当然とうぜん,实际使用しようてきすう通常つうじょう远大于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

わかようesらい表示ひょうじ

  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.234571e = 5; s = 1.234567有理數ゆうりすう123457.1467123456.659てき近似きんじ值。

  e=5;  s=1.234571
− e=5;  s=1.234567
----------------
  e=5;  s=0.000004
  e=−1; s=4.000000 (四捨五入ししゃごにゅう正規せいき)

浮點すうてき以精かくてき計算けいさん,如同Sterbenz引理えいSterbenz lemmaところ說明せつめいてき,就算いんため漸進ぜんしんしき溢位えいgradual underflow而出現下げんか溢位也是いちようはららいすうてき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.10.01,0.1てき平方へいほうすんでじゅん确的0.01,也不さい接近せっきん0.01てきひょう达的すう。单精(24とく)浮点数表示すうひょうじ0.1てき结果为,そく

0.100000001490116119384765625

此数てき平方ひらかたただし

0.010000000298023226097399174250313080847263336181640625

ただしさい接近せっきん0.01てきひょう达的すう

0.009999999776482582092285156250

浮点数也かずや不能ふのうひょう达圆しゅうりつ所以ゆえん不等ふとう于正无穷,也不かい溢出。下面かめんてきC语言だい

double pi = 3.1415926535897932384626433832795;
double z = tan(pi/2.0);

てき计算结果为16331239353195370.0,如果よう精度せいど浮点すう,则结はて为−22877332.0。どう样的,

よし于浮点数てんすう计算过程ちゅう丢失りょう精度せいど,浮点运算てきせい质与数学すうがく运算ゆうしょ不同ふどう。浮点加法かほう乘法じょうほう符合ふごう结合りつ分配ぶんぱいりつ

事故じこ[编辑]

奔騰ほんとう早期そうきてき60-100MHz P5版本はんぽんざい浮點運算うんざん單元たんげんゆういち問題もんだいざい極少きょくしょうすう情況じょうきょうかいしるべ致除ほう運算うんざんてきせい確度かくどくだてい。這個缺陷けっかん於1994ねん發現はつげん變成へんせい如今ひろため人知じんちてき奔腾浮点じょ错误同時どうじ這一事件じけんしるべえいとくなんじおちいにゅう巨大きょだいてき窘態,建立こんりゅう召回計畫けいかくらい回收かいしゅうゆう問題もんだいてき處理しょり

相關そうかん條目じょうもく[编辑]

參考さんこう資料しりょう[编辑]

  1. ^ 1.0 1.1 1.2 Goldberg, David. What Every Computer Scientist Should Know About Floating-Point Arithmetic (PDF). ACM Computing Surveys. March 1991, 23 (1): 5–48 [2016-01-20]. S2CID 222008826. doi:10.1145/103162.103163. (原始げんし内容ないようそん (PDF)于2006-07-20).  ([1]页面そん档备份そん互联网档あん), [2]页面そん档备份そん互联网档あん), [3]页面そん档备份そん互联网档あん))
  2. ^ Patterson, David A.; Hennessy, John L. Computer Organization and Design, The Hardware/Software Interface. The Morgan Kaufmann series in computer architecture and design 5th. Waltham, Massachusetts, USA: Elsevier. 2014: 793. ISBN 978-9-86605267-5 えい语). 
  3. ^ 美国びくに专利3037701A (PDF 版本はんぽん)(于1962ねん6がつ5にちちゅうさつ)Huberto M Sierra——Floating decimal point arithmetic control means for calculator。