如何在java和hibernate中存储精确的精度值?

时间:2017-07-24 10:59:48

标签: java mysql hibernate

用户输入为: 44.4

存储到数据库时,转换为:44.40000153

数据库数据类型为:浮动,长度为: 20,8

这里我想准确存储44.4

我不想改变数据库设计。

2 个答案:

答案 0 :(得分:3)

然后不要使用float。在数据库中使用number(10,5)(或者您需要多少位数),在Java中使用BigDecimal

BigDecimal为您提供无限数量的数字,但在数据库中,可以存储的内容有限制。通常是38位数(通常足够)。

答案 1 :(得分:1)

<强> 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;

我在这里使用了CAST

它显示了你的预期结果。