0

我在通過Informatica 9.1將十進制值轉換爲varchar時遇到了問題。我的源代碼和目標都在Oracle中。 當我使用截斷功能時,它會自動將數字的值減少「0.01」。 我的源數據類型是金額(十進制(38,15));我使用下面的表達式將它截斷爲字符串,如下所示:TO_CHAR(TRUNC(Amount,2))。 SourceInformatica Powerecenter 9.1.0小數位數問題

我的目標數據類型是varchar(255)。以下是目標中的數據捕捉。 對於截斷後的9.52量,如快照中所示,該值改爲9.51。 Target

任何人都可以幫助理清這個問題嗎?

+0

這看起來不對!你確定這個領域沒有其他邏輯嗎? – Samik

+0

除了截斷像TRUNC(Amt,2)這樣的值,然後將其轉換爲varchar;沒有邏輯。 –

回答

1

這可能只是您查看數據的方式的影響。例如,假設您的值爲9.5185 - 在客戶端工具中查看時,它將顯示四捨五入到9.52。而TRUNC功能將切斷最後一位數字,將其保留爲9.51。

+0

正如我剛纔所說,來自源的值是9.520000000000000,除了將其截斷爲2個小數位並將其轉換爲varchar,沒有其他邏輯。 –

+0

你怎麼知道這個值是9.520000000000000?你查看/檢查的方式是什麼?一些應用程序在顯示值之前進行隱式舍入。 – Maciejg

1

Maciej很可能是正確的......在很多應用程序中,表示爲9.52的實際存儲爲9.51999999999。你能幫我們一個忙,截至10個地方而不是2個,併發布結果?

0

如前所述,to_char函數的行爲方式以及在Informatica中如何處理數字輪。 這可以幫助,如果你想更「精確」,並有少四捨五入

從Informatica的的PowerCenter指南:與 精度大於15

的的PowerCenter集成服務轉換小數港口爲雙並返回TO_CHAR數值爲 科學計數法。

要避免這種情況,您必須啓用高精度。當您啓用高 精度,支持的PowerCenter小數高達28

注精度高的精度是一個複選框成爲歡迎使用屬性選項卡下的工作流程

要解決此問題選擇使精度高會話如下:

在Workflow Manager中,打開會話任務以進行編輯。 單擊屬性選項卡。 選擇啓用高精度選項。 關閉會話並保存。

PowerCenter session using TO_CHAR on decimal field