2017-03-03 23 views
0

在Oracle數據庫中,我在格式編號爲(17,2)的列中存儲數字0.5。 我使用Java程序(使用mybatis)讀取它,並將其存儲爲實體對象的字符串字段。這個字符串字段的值是「.5」,而不是我所期望的「0.5」。將浮點數(在0和1之間)轉換爲字符串時爲什麼零不存在

我知道「.5」是浮點數的標準表示,可以在大多數編程語言中直接轉換爲數字0.5。但是當它顯示在網頁上時,它就不是我想要的。當然,只要檢查第一個字母是否是「。」,我就可以隨時將其轉換爲「0.5」,我認爲它很容易忘記。

我也可以使用Oracle函數來指定將數字轉換爲字符串的格式。但TO_CHAR()函數以格式模式爲參數,使輸出字符串爲固定長度,或者不使用格式參數將0.5打印爲「.5」。這兩種行爲都不是我想要的。我只想要一個「原樣」的方式來轉換數字。但是,甲骨文的「如它」的方式不是我想要的。

所以我要問:

有什麼更好的方式來處理這個問題?

+1

你用什麼Java程序閱讀它?並將其存儲爲一個實體對象的字符串字段如何?爲什麼?它應該是一個'double'或更可能是'BigDecimal'。 – EJP

+0

@EJP是的,最後我們將它存儲爲BigDecimal。而且,如何選擇評論作爲最佳答案? –

回答

0

您不應該混淆數字的值與其表示。

0.5.51/2, 2-1334/6680.12和0000000.50000000000所有值完全相同。

如果希望以某種方式格式化該值,則需要指定將值轉換爲字符串時的情況。

+0

我所要求的正是如何在從源代碼將值轉換爲字符串時指定格式(對於這種情況,Oracle數據庫或mybatis,因爲它是甲骨文或mybatis誰轉向東西) –

0

我不熟悉,但mybatis, 不能你剛纔讀它作爲double,然後例如格式化與十進制formater?

DecimalFormat df = new DecimalFormat("0.00"); df.format(number);

相關問題