我们使用decimal数据类型在SQL Server数据库中存储财务数据,并且需要6-8位小数的精度。当我们通过数据访问层将此值返回到我们的C#服务器时,它以decimal数据类型返回。
由于某些设计限制超出了我的控制范围,因此需要进行转换。将其转换为字符串不是问题。将其转换为double,则会产生舍入误差,因为MS文档中指出:“[从decimal到double的转换]可能会产生舍入误差,因为双精度浮点数的有效数字比decimal少。”
作为double(或string),我们可以在完成任何计算后将其舍入为2个小数位数,那么保证在舍入之前不丢失任何精度的正确方法是什么?
由于某些设计限制超出了我的控制范围,因此需要进行转换。将其转换为字符串不是问题。将其转换为double,则会产生舍入误差,因为MS文档中指出:“[从decimal到double的转换]可能会产生舍入误差,因为双精度浮点数的有效数字比decimal少。”
作为double(或string),我们可以在完成任何计算后将其舍入为2个小数位数,那么保证在舍入之前不丢失任何精度的正确方法是什么?