差之毫釐謬以千里 計算中的精度問題

2021-08-29 06:25:53 字數 773 閱讀 2660

如果你只是i++來作計數器就可以跳過此post,主要是為進行大資料計算和與錢相關的計算的同志們寫的,也許有謬誤,歡迎批評指出

很多時候,絕大部分的大學生在參加工作後都是把計算機當作乙個大型計算器一般的來寫程式,譬如double a=12936/123546;,fine

當這個結果僅供娛樂,那麼很幸運,你只需要繼續使用就行了,但是再小的誤差積累起來都是乙個可怕的數字,而計算的誤差對於計算

機來說,對於一般人潛意識裡認為是精確的代名詞的計算機來說卻是家常便飯。很多時候我們意識到會有誤差,但是都使用高精度的型別去彌補

但是對於很多情況下都還是不夠,因為誤差仍然是存在的,只是我們認為可以忽略了而已。

很多和錢打交道的計算都應該很注意誤差對於計算的影響,比如曾經有部**裡描述過一種方法,有個黑客入侵了銀行系統,他把每個帳戶的餘額都作了一次運算,由於計算的誤差,每個帳戶多了幾釐錢,對於銀行來說這幾釐錢毫不起眼,但是他把所有帳戶多出來的幾釐錢匯入了自己的帳戶,於是乙個百萬富翁就此誕生,而每個銀行帳戶上的錢都沒有少。當然,**是**但是足夠提起我們對於誤差的重視

計算機裡誤差的原由其實很簡單,計算機只能快速的搬動它的兩根指頭來計算,所以在計算機裡,加減法是安全的,但是也僅僅對於整數而言,兩個浮點數的計算就會因為浮點數本身的原因造成最後的幾位存在疑問,當多次相加,誤差就會累積起來,然後和滾雪球一樣越來越大,浮點加減的誤差按照線形增長,乘除就更加霸道了,會按照指數增長。而對於分數來說在計算機裡只有1/2,1/4,1/8,1/16等1/2 的指數才是精確的,所以對於計算來說最好是可能的話把乘除都換算成等價的加減運算。拋磚引玉,到此為止......

差之毫釐,謬以千里

今天在編一段 的時候,遇到乙個很奇怪的報錯 in file included from include asm generic int ll64.h 10 0,from home charles code linux 3.10.28 include uapi asm generic types.h ...

差之毫釐謬以千里 計算中的精度問題

如果你只是i 來作計數器就可以跳過此post,主要是為進行大資料計算和與錢相關的計算的同志們寫的,也許有謬誤,歡迎批評指出 很多時候,絕大部分的大學生在參加工作後都是把計算機當作乙個大型計算器一般的來寫程式,譬如double a 12936 123546 fine 當這個結果僅供娛樂,那麼很幸運,你...

觸發器 差之毫釐謬以千里

最近在學習資料庫的相關知識 啊,啊,啊,我不想說我是為了準備考試,否則好丟人啊。課本名 全國計算機等級考試 教程 資料庫技術 2013年版 高等教育出版社 剛學習到關於觸發器的知識,發現書上有乙個致命的錯誤 哈哈,致命是昨天剛學到的詞彙 課本164頁,第八章,在介紹觸發器的時候 舉的第乙個例子 建立...