gpt4 book ai didi

sql-server - 无法在 SQL Server 2019 中使用 Java Double.MIN_VALUE 4.9E-324 作为浮点文字

转载 作者:行者123 更新时间:2023-12-04 07:54:00 24 4
gpt4 key购买 nike

使用 SQL Server 运行以下 JDBC 代码:

try (PreparedStatement s = connection.prepareStatement("select 4.9E-324, ?")) {
s.setDouble(1, 4.9E-324);

try (ResultSet rs = s.executeQuery()) {
while (rs.next()) {
System.out.println(rs.getDouble(1));
System.out.println(rs.getDouble(2));
}
}
}
结果是:
0.0
4.9E-324
因此,虽然绑定(bind)值被正确回显,但文字却不是。这怎么解释? I've noticed in the docs .

Any float value less than 5E-18 (when set using either the scientific notation of 5E-18 or the decimal notation of 0.0000000000000000050000000000000005) rounds down to 0. This is no longer a restriction as of SQL Server 2016 (13.x).


但我使用的是 SQL Server 2019
select @@version
产量:
Microsoft SQL Server 2019 (RTM-CU8-GDR) (KB4583459) - 15.0.4083.2 (X64) 
Nov 2 2020 18:35:09
Copyright (C) 2019 Microsoft Corporation
Express Edition (64-bit) on Linux (Ubuntu 18.04.5 LTS) <X64>
以及最新版本的 SQL Server 的 JDBC 驱动程序
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>9.2.1.jre8</version>
</dependency>

最佳答案

same documentation page还列出了有效浮点值的范围为:

-1.79E+308 to -2.23E-308, 0 and 2.23E-308 to 1.79E+308


所以,Java Double.MIN_VALUE超出范围。这有效:
try (PreparedStatement s = connection.prepareStatement("select 2.23E-308, ?")) {
s.setDouble(1, 2.23E-308);

try (ResultSet rs = s.executeQuery()) {
while (rs.next()) {
System.out.println(rs.getDouble(1));
System.out.println(rs.getDouble(2));
}
}
}
生产:
2.23E-308
2.23E-308
但是,它没有解释为什么绑定(bind)变量被正确回显。

关于sql-server - 无法在 SQL Server 2019 中使用 Java Double.MIN_VALUE 4.9E-324 作为浮点文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66797011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com