【发布时间】:2015-01-18 21:55:14
【问题描述】:
任何人都可以解释以下内容,在我看来这只是一个错误:
select convert(numeric(8,4), convert(float, '12.4155499999999996418864611769'))
12.4156
答案当然应该是 12.4155。 为了仔细检查,我创建了一个表 MyTab,其中包含一个 sybase“float”列并插入了“12.4155499999999996418864611769”。然后使用转换转储十六进制并得到 0x4028D4C2F837B4A2。这确实是我插入的字符串的 IEEE 754 双精度表示。然后,如果我(如上)将其转换为数字(8,4),则为 12.4156。
这是我认为的错误,还是我要疯了?
【问题讨论】: