我们使用十进制数据类型将财务数据存储在SQL Server数据库中,我们需要6-8位精度的十进制数.当我们通过数据访问层将这个值返回到我们的C#服务器时,它将作为十进制数据类型返回.
由于一些我无法控制的设计约束,需要对其进行转换.转换为字符串不是问题.转换为double是因为MS文档说"[从十进制转换为双倍]会产生舍入错误,因为双精度浮点数的有效位数小于小数位数."
作为双重(或字符串),我们可以在完成任何计算后舍入到2位小数,那么进行十进制转换的"正确"方法是什么,以确保在舍入之前我们不会丢失任何精度?
Jon*_*eet 13
转换不会在前8位数内产生错误.double有15-16位精度 - 小于28-29 decimal,但足以满足你的目的.
但是,您肯定应该制定某种计划以避免double将来使用- 但这对于财务计算来说是不合适的数据类型.