為什麼wps加法計算結果為零就亂碼呢?

時間 2021-06-26 20:25:40

1樓:白永干

計算機浮點問題,用round處理一下就行了,詳情可以往下看。

單元格中輸入「=12-11.7」,返回的結果不是0.3,而是0.300000000000001

單元格中輸入「=(43.1-43.2)+1」,返回的結果不是0.9,而是0.899999999999999

單元格中輸入「55556.848」,會自動變成55556.8479999999

這麼強大的Excel,居然連一些簡單的加減法都計算不正確。

這是什麼原因造成的呢?大家都知道,計算機採用的是二進位制,以二進位制儲存浮點數時,會引起乙個混亂的問題是,某些 10 進製的有窮非迴圈數在二進位制下是無窮的迴圈數。這方面最常見的示例是值 0.

1 及其變體。雖然這些數字在以 10 為底的情況下可以完美地得到表示,但二進位制格式下的相同數字在尾數中儲存時就變成了以下二進位制迴圈數字:000110011001100110011(等類似數字)

Excel會在在尾數中儲存能夠容納的部分,並截斷其餘部分。這導致在儲存數字時產生較小的誤差。

在二進位制下,即使是常見的十進位制分數(例如十進位制的 0.0001)也無法得到準確表示。(0.

0001 是乙個二進位制迴圈分數,以 104 位為乙個週期)。這類似於為什麼分數 1/3 在十進位制下無法得到準確的表示(迴圈小數 0.33333333333333333333)。

這個問題怎麼解決呢?

由於造成的誤差非常小,大多數境況下是不需要處理的,如果要處理,有下面兩個方法。

方法1:使用ROUND函式保留小數字數

方法2:設定Excel已顯示精度為準

可在「檔案」→「選項」→「高階」中可設定。

但是我並不推薦使用第二種方法的設定,例如,如果選擇顯示兩位小數的數字格式,然後開啟「以顯示精度為準」選項,在你儲存工作簿時,所有超出兩位小數的精度都將會丟失。此選項影響活動的工作簿(包括所有工作表)。而且還無法撤消此選項和恢復丟失的資料。

為什麼執行後結果為0

逆轉未來2020 float的結果是0,double的結果是1先分析問題 若copy是float型,則表示式 int copy 10的值是整型,值為37 表示式 copy 10 的值是float型,值為37.1 所以根據資料型別的混合運算規則,表示式 copy 10 int copy 10 的值是f...

以結果為導向是否正確?為什麼?

周周 李世苟 僅以結果來評價不是完全準確的。乙個簡單的極端例子 你和朋友在一棟木屋子裡,有白蟻在啃食房子的結構,你說房子很危險,這樣下去要垮,朋友說這房子很好,沒有問題,不會垮,然後你去把白蟻消滅了,房子沒垮。如果僅從結果上來看朋友是對的,但回顧過程的話情況恰恰相反,這種例子還有很多。 三笑 所有極...

為什麼負數的取餘計算各個程式語言結果不統一?

譚耀程 問題的關鍵在於商是向負無窮取值還是向0取值 7 10 0.7 or 7 10 1.3 其他語言我不清楚,貌似c11規定向0取值 就算是相同語言不同編譯器也會不一樣的。在我發現這個問題之後,每當我更新IDE 編譯器的時候都會用我的測試程式跑一遍,看看是不是和上個版本有什麼不同。有的時候一些小改...