select convert(numeric(8,4), convert(float, '12.4155499999999996418864611769'))
12.4156
当然,答案应该是12.4155。为了进行双重检查,我创建了一个名为MyTab的表格,其中包含单个sybase "float"列,并插入"12.4155499999999996418864611769"。然后使用convert转储hex并得到0x4028D4C2F837B4A2。这确实是我所插入的字符串的IEEE 754双精度表示。然后,如果我(如上所述)将其转换为numeric(8,4),它会给出12.4156。我认为这样做是错误的,还是我疯了?