提问人:Jim 提问时间:11/4/2022 最后编辑:Peter MortensenJim 更新时间:11/8/2022 访问量:360
什么MySQL类型可以在不损失精度的情况下存储Java Double?
What MySQL type can store a Java Double without loss of precision?
问:
我在来自服务器的 Java 应用程序中有一个值。我想将该值存储在MySQL中,但我不希望发生任何形式的精度损失。Double
它有点将其存储为 .如何在MySQL表中定义相应的数据类型,以便在应用程序接收到它时完全存储它?text
DOUBLE
我在MySQL文档中看到数据类型需要传递精度。所以我不确定如何安全地定义它。
答:
1赞
MisterMiyagi
11/4/2022
#1
MySQL DOUBLE
已经是 64 位又名双精度浮点类型,就像 Java 的一样。两者都可以存储相同的值而不会损失精度;Java值可以完全存储在MySQL中。Double
Double
DOUBLE
用于定义精度或位数的替代语法是可选的。当标准或足够时,没有义务使用它们。FLOAT
DOUBLE
评论
0赞
Jim
11/4/2022
因此,如果 java 应用程序有一个 并且MySQL表的设置是如果我存储Java的值,它会得到?double
0.0117340087990645
Double
select
0.0117340087990645
0赞
MisterMiyagi
11/4/2022
@Jim 是的,只要您在读取/写入过程中不(意外)更改类型,您就可以取回您输入的确切值。
0赞
Jim
11/4/2022
通过改变类型,你的意思是铸造?
1赞
MisterMiyagi
11/4/2022
@Jim 任何形式的皈依,真的。比如说,在将 Java 存储为 .DOUBLE
float
double
1赞
Karl Knechtel
11/5/2022
@PeterMortensen 我不认为我们关心为此目的的中间表示,因为无论如何都无法将 Java 代码中的多余位传达给数据库——它们只是暂时存在于硬件级别。也就是说,我无法理解为什么数据库不会通过逐位复制(不注意 nans 等的语义解释)将 Java 代码中表示的 64 位值存储到 64 位宽的数据库列中的任何技术原因。
评论
NUMERIC
DECIMAL
BigDecimal
Double
BigDecimal
Double