用戶輸入是:44.4如何在java和hibernate中存儲精確的精確值?
雖然存儲到數據庫其轉換爲:44.40000153
數據庫數據類型是:浮子和長度是:20,8
在這裏,我想準確存儲44.4
我不想更改數據庫設計。
用戶輸入是:44.4如何在java和hibernate中存儲精確的精確值?
雖然存儲到數據庫其轉換爲:44.40000153
數據庫數據類型是:浮子和長度是:20,8
在這裏,我想準確存儲44.4
我不想更改數據庫設計。
然後請不要使用float
。在數據庫中使用number(10,5)
(或者需要多個數字),在Java中使用BigDecimal
。
BigDecimal
爲您提供了無限數量的數字,但在數據庫中存在限制。通常是38位數字(即通常就足夠了)。
field float(20,1)
您可以嘗試使用上面的變化。
讓它20,1
我曾試圖下同
create table abc(field float(20,1));
insert into abc value(44.4);
select * from abc
或者,如果你是無法改變的數據庫,然後用下面去查詢
select cast(field as decimal(10,1)) from abc;
在這裏,我哈哈d used CAST
它顯示了我的預期結果。
謝謝..但我不能改變固定的數據庫。 –
然後,您不能在該列中精確地存儲「44.4」。您可以嘗試在使用「NumberFormat」進行顯示之前將其四捨五入。 – Thilo
在數據庫中存儲任意精確值的一個選項是將它們存儲爲字符串並將其轉換爲/從BigDecimal轉換。儘管如此,您仍然無法在查詢中對它們執行數字操作。 – Raniz