原因不明的數字計算不相符 - IBM
文章推薦指數: 80 %
在計算中使用此數字時,可能會有捨入錯誤。
例如,Microsoft Excel 計算使用二進位數字(未捨入小數位數),但是報告中的格式會顯示捨入過的小數 ...
原因不明的數字計算不相符
您可能發現由於捨入錯誤而造成原因不明的數字計算不相符。
例如:
執行回歸測試後發現數字出現差異。
它們的不同之處僅僅是小數位數的捨入。
您選擇不在報告中顯示零,但零卻依然顯示出來,這是因為報告中有捨入為零的小數位數(例如,0.00000000000000426)。
捨入問題不是IBM®Cognos®軟體特有的問題。
進行捨入的環境中都有這個問題。
二進位捨入錯誤可能會由於二進位捨入錯誤而造成計算中的不相符。
例如,如果數字1.1代表二進位浮點數,而且您的報告格式包括很多小數位數,則數字1.1實際上可能會顯示為類似1.09999999999997。
如果您的報告格式化為只使用一位小數,則會進行小數捨入(補償二進位捨入)。
因此實際值為1.09999999999997的數字會顯示為1.1。
在計算中使用此數字時,可能會有捨入錯誤。
例如,MicrosoftExcel計算使用二進位數字(未捨入小數位數),但是報告中的格式會顯示捨入過的小數位數,這可能造成些微的不相符。
除法捨入錯誤無論數字如何表示,涉及除法的計算都通常會發生捨入錯誤。
這類計算的範例為「平均值」和「基數百分比」。
減少捨入影響的設計準則最佳解決方案就是變更基礎資料庫綱目或Cube模型,但這不可能一律可行。
另一個解決方案是透過在編寫報告和在IBMCognosFrameworkManager與外部OLAPCube中建立模型時遵循下列準則,讓捨入的影響降至最低:
儘量避免將資料儲存為浮點數格式。
特別是貨幣值更要如此,貨幣值應該儲存為固定小數點十進位數,或是具有小數位數值(例如2)的整數。
例如,在Cube中,2012年的「CampingEquipment收入」為$20,471,328.88。
如果收入明細儲存為浮點數,則計算收入時可能會發生捨入錯誤。
根據計算的順序,捨入錯誤可能稍有不同。
如果先計算「產品」的收入然後計算「時間」的收入,則可能得到與先計算「時間」然後計算「產品」不同的捨入錯誤。
總收入可能計算為前一個範例中所顯示的數字。
或者可能稍微不相符,例如為$20,471,328.8800001而不是$20,471,328.88。
內部數字可能與顯示的數字稍有不同。
視OLAP引擎使用報告進行計算的順序不同,即使執行相同報告,數字也可能會不同。
儘量避免在報告中使用除法。
必須使用除法時,要儘量在計算程序的後面部分使用。
例如,不使用Total([Revenue]/1000),而是使用Total([Revenue])/1000。
進行比較時,增加餘裕以允許進行捨入。
例如,您可能希望[Profit%]格式化為沒有小數的百分比的小數值。
但是,過濾器[Profit%]<>0(或[Profit%]NOTBETWEEN0and0)拒絕零值,並且可能傳回格式化後顯示為0%的值。
若要避免發生此情況,請使用下列兩種方式其中之一進行過濾:
[Profit%]NOTBETWEEN-0.005and0.005
([Profit%]0.005)
請注意,0.005相當於0.5%,視浮點精準度流失程度,會顯示為0%或1%。
在某些情況下,您可能偏好透過明確地捨入值來控制捨入錯誤。
例如,不使用[Profit%],而是使用round([Profit%],2)。
每次重新計算數字,而不是重複使用可能包含捨入小數的計算。
MicrosoftAnalysisServices2005/2008可能還有其他的考量,尤其是比較不同執行(如在LifecycleManager中進行的執行)的報告結果時。
如需相關資訊,請參閱Microsoft文件。
上層主題:計算資料時發生問題
延伸文章資訊
- 1基本技能:Excel中的數字處理和數字提取 - 每日頭條
1、取絕對值. 公式=ABS(數字) · 2、取整(將數字小數點後的所有位數去掉,保留整數位). 公式=INT(數字) · 3、四捨五入. 公式=ROUND(數字,保留小數位數) · 4 ...
- 2原因不明的數字計算不相符 - IBM
在計算中使用此數字時,可能會有捨入錯誤。 例如,Microsoft Excel 計算使用二進位數字(未捨入小數位數),但是報告中的格式會顯示捨入過的小數 ...
- 3將數字四捨五入至所要的小數位數 - Microsoft Support
=ROUNDDOWN(3.14159,3) (等於3.141). 提示: 若要取得更多範例,以及試用Excel Online 活頁簿中的範例資料,請參閱ROUND、ROUNDUP 和 ...
- 4如何限制Excel中公式中的小數位數? - ExtendOffice
在Excel中使用“格式單元格”命令限制小數位數 · 2。 右鍵單擊選定的單元格,然後選擇單元格格式從右鍵單擊菜單中。 · 3。 在接下來出現的“設置單元格格式”對話框中,轉到數 ...
- 5用excel取得某數的個十百千位數
這邊會用到三種函數,TRUNC,CEILING跟RIGHT 首先TRUNC是無條件捨去小數,Right是取得該數最右邊的數字, 所以除了個位數外,都可以利用這兩個函數取得 ...