- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近我发现了奇怪的事情:结果
var
d: double;
begin
d := StrToFloat('-1.79E308');
与 ASE 和 SQL Server 通过转换为浮点字段类型的字符串值“-1.79E308”不同
INSERT INTO my_table (my_float_field) VALUES (-1.79E308)
对于 Delphi 内存转储是 9A BB AD 58 F1 DC EF FF
对于 ASE/SQL Server,选择数据包中的值为 99 BB AD 58 F1 DC EF FF
。
谁错了,是服务器还是 Delphi?
最佳答案
我们工作的前提是 StrToFloat
生成与所提供的十进制值最接近的可表示二进制浮点值。
您提供的两个十六进制值是相邻的。您可以看到它们的尾数相差 1
。下面是一些对这两个值进行解码的 Python 代码:
>>> import struct>>> struct.unpack('!d', 'ffefdcf158adbb9a'.decode('hex'))[0]-1.7900000000000002e+308>>> struct.unpack('!d', 'ffefdcf158adbb99'.decode('hex'))[0]-1.79e+308
请记住,Python 使用尽可能短的有效值来打印浮点值,其中最接近的可表示值是实际值。在 Python 看来,ffefdcf158adbb99
解码为打印为 -1.79e+308
的值,这足以证明 ffefdcf158adbb99
是最接近的可表示形式值(value)。换句话说,Delphi 代码给出了错误的答案。
并且,出于好奇,朝相反的方向:
>>> hex(struct.unpack('<Q', struct.pack('<d', float('-1.79e308')))[0])'0xffefdcf158adbb99L'
有趣的是,32 位 Delphi 编译器生成 ffefdcf158adbb99
,但 64 位 Delphi 编译器生成 ffefdcf158adbb9a
。这是一个明显的缺陷,应作为错误报告提交给质量门户。
关于delphi - StrToFloat 和谁错了 : Delphi or ASE/SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109339/
我需要确定运行我的 sql 的当前数据库服务器名称,以便我可以根据环境执行某些特定步骤。 有人知道怎么做吗? 最佳答案 SELECT @@servername 为什么?因为@@servername 是
Sybase ASE 有没有办法获取自 ASE 服务器启动以来的时间? 最佳答案 有一个全局变量@@boottime,可用于查找ASE服务器启动的时间。只需使用- 选择@@boottime以获取服务器
我需要针对Sybase 12.5(我们仍支持)测试我的旧应用程序,但似乎在sybase.com上没有任何下载。 您知道该下载仍在哪里吗?我记得他们曾经有一个非常出色的Windows开发人员版本。 最佳
此功能在 MySQL as shown in this post 中可用并根据 Sybase documentation它也应该被支持,但是 Sybase 没有提供一个有效的例子,所以你必须解释以下内
我部署了一个 Azure ILB ASE,并在其中部署了一个 Web 应用程序(例如)https://myapp.my-internal domain。我配置了一个应用程序网关,通过 ILB 将外部域
我部署了一个 Azure ILB ASE,并在其中部署了一个 Web 应用程序(例如)https://myapp.my-internal domain。我配置了一个应用程序网关,通过 ILB 将外部域
是否可以显示 Sybase Adaptive Server Enterprise 12.5.4 中的当前隔离配置集? 如果是这样,那么我该如何显示它? 最佳答案 尝试从 @@isolation 中选择
ASE中有没有替换单词的功能? 最佳答案 尝试这个: SELECT str_replace( 'impossible', 'im',':)' ) 关于sap-ase - 有没有像REPLACE这样的
我有一个要在查询中完成的计算:((28154/3745181) * 100) ,其结果值为 .751739我想要的 0.75 . 但是当我尝试在查询中执行此操作时,我得到 0如下所示: select
我正在研究 sybase ASE 15。寻找这样的东西 Select * into #tmp exec my_stp; my_stp 返回 10 个数据行,每行两列。 最佳答案 在 ASE 15 中,
如何在 sybase 中获得存储过程的授予权限? 最佳答案 这取决于您想要该信息的形式。 如果您出于某种内部目的编写 SQL,并且需要该信息作为它的数据,那么 Kolchanov 的答案是正确的。 如
我将where子句语句存储在数据库表中,之后我在select语句中获取和使用。 这是我的 sybase 查询, "INSERT table(RUN_ID,RUN_DATE,GRGR_ID,SGSG_I
我正在我的存储过程中获取一些参数。在对这些参数进行操作之前,我想验证它们,如果参数不符合要求,那么我想退出存储过程并显示错误消息。 示例代码: create proc abcd (
我尝试添加一个新列 第2列进 test_tbl 并将列设置为默认值 “不适用”和 不为空 .声明如下: if not exists (select 1 from syscolumns where ob
我们有一个 ILB ASE,其中运行 2 个 Web 应用程序: app1.mydomain.local app2.mydomain.local 我们在其前面有一个应用程序网关,使应用程序可以从互联网
我们有两个前端虚拟机。一个位于 WE 区域中的 VNET 内,另一个位于 NE 中的 VNET 内的虚拟机。这些计算机上的一些应用程序应该调用我们部署在 WE 区域上的私有(private)/后端服务
我有包含空格和数据的列: 例子:|鱼 | 我怎样才能更新列,这样我的结果就是:|鱼| ? 在 oracle 中,我可以修剪该列: update Example set column1 = trim(c
是否有类似 Sybase ASE 中的 set showplan on 命令从 MYSQL 查看执行计划的等效方法? 最佳答案 您可以使用 EXPLAIN声明。 关于MYSQL 等同于Sybase A
如何在 Sybase ASE 15 表设置中删除列。 我试了几次,没用: alter table my_table drop column1, column2 以及查看 Sybase document
我的要求是声明一个接受最大大小的 xml 值的数据类型。 问题:我们在 Sybase 中有 text、xml 或 varchar(max) 数据类型吗? 最佳答案 有文本数据类型。您可以找到更多信息
我是一名优秀的程序员,十分优秀!