我们的sql server 2008中有三个表
- 交易订单
- 交易装运
- 交易子订单。
其中三个有一个共同的列Carrying_cost。三个表中的数据类型相同。它是浮点数,NUMERIC_PRECISION 53 和 NUMERIC_PRECISION_RADIX 2。
在表 1 - transact_orders 中,该列的三行值为 5.1。转换(十进制(20,15),携带成本)
5.100000
在这里返回......表 2 - transact_shipments 三行正在从 transact_orders 中的这三行获取 Carrying_cost。转换(十进制(20,15),携带成本)
5.100000
在这里也返回.....。表 3 - transact_child_orders 总结了来自 transact_shipments 的这三个持有成本。那里显示的值是
15.3
我运行正常选择时的值。
但在这个稳定的convert(decimal(20,15), carrying_cost)
回报。它也在 ui 中15.299999999999999
显示了该值。precision gained
虽然 ui 只是获取值,而不是进行任何转换。在 java 代码中,从 db 中获取值的变量定义为double
.
步骤3中的代码,总结了三个carrying_costs很简单::
…… sum(isnull(transact_shipments.carrying_costs,0)) sum_carrying_costs,
_
知道为什么这种变化发生在第三步吗?任何帮助将不胜感激。如果需要更多信息,请告诉我。