Java 无法保存所有小数位
我在mariadb中有以下列定义:Java 无法保存所有小数位,java,hibernate,mariadb,Java,Hibernate,Mariadb,我在mariadb中有以下列定义: 倍增倍数 在我的实体类中,我有以下列: @列(name=“multiplier”,精度=15) 私人双项乘数 我已经指定了精度,但表中保存的数据仅限于5位小数。我记录了项目乘数的值,它是0.458327459574。但在表中,保存的值仅为0.45833 我还尝试在乘法器列中使用double(22,15)和decimal(22,15),它也不起作用 我如何保存所有的小数位?我还试着用BigDecimal作为itempirator,但没用。double(22,15
倍增倍数
在我的实体类中,我有以下列:
@列(name=“multiplier”,精度=15)
私人双项乘数代码>
我已经指定了精度,但表中保存的数据仅限于5位小数。我记录了项目乘数的值,它是0.458327459574。但在表中,保存的值仅为0.45833
我还尝试在乘法器
列中使用double(22,15)
和decimal(22,15)
,它也不起作用
我如何保存所有的小数位?我还试着用BigDecimal
作为itempirator
,但没用。double(22,15)
令人讨厌。您会在底部得到不必要的舍入,在顶部得到截断。如果您要使用DOUBLE
,只需使用普通的'DOUBLE,它将为您提供大约16个有效数字
“输出中只有5位小数”?可能是格式四舍五入到小数点后5位,而不是数据
你说
我已经指定了精度
您是通过什么方式指定精度的
请提供所涉及的SQL语句。特别是显示创建表
。我们需要弄清楚是Java把事情搞砸了还是MariaDB把事情搞砸了
另一件要尝试的事情是,不仅要显示乘数
,还要显示100*乘数
——报告您是得到45.83275
还是45.83300,问题似乎出在您的数据库上,而不是实体上。数据库是否可能将精度限制为5?与SQL一样,如果将其声明为Number(30,15)
,则表示该字段有30位数字,其中15位可以是十进制数字。有关详细信息,请参阅。如何知道数据库是否将精度限制为5?我还尝试了双精度(22,15)和十进制(22,15),但没有成功。您的查询是如何构造的?我只是从sql客户端查看。我使用createtabletename{…乘数double(22,15)创建了表,…);
将其导出到csv也只会给我5位小数。我的意思是如何将值保存到表中?如何在Java中执行?我乘以100,它被保存为45.83275。我在实体列定义中指定了精度含义,我将其放入@column(name=“multiplier”,precision=15)
。在创建表中
我只是将列指定为倍增倍数
我认为现在一切都好了。似乎使用客户端并从客户端导出,我只得到5个小数…但当我从java查询时,它给出了所有小数。客户端是个恶棍!