任何人都可以解释以下内容,这对我来说只是一个bug:
select convert(numeric(8,4), convert(float, '12.4155499999999996418864611769'))
12.4156
Run Code Online (Sandbox Code Playgroud)
当然答案应该是12.4155.为了仔细检查,我创建了一个表MyTab,其中包含一个sybase"float"列,并插入了"12.4155499999999996418864611769".然后使用转换转储十六进制并得到0x4028D4C2F837B4A2.这确实是我插入的字符串的IEEE 754双精度表示.然后,如果我(如上所述)将其转换为数字(8,4),则给出12.4156.
我认为这是错误的,还是我生气了?