Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法保存所有小数位_Java_Hibernate_Mariadb - Fatal编程技术网

Java 无法保存所有小数位

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

我在mariadb中有以下列定义:

倍增倍数

在我的实体类中,我有以下列:

@列(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查询时,它给出了所有小数。客户端是个恶棍!