我们正在使用十进制数据类型将财务数据存储在SQL Server数据库中,我们需要十进制精度的6-8位数字。当我们通过我们的数据访问层将这个值返回到我们的C#服务器时,它将作为十进制数据类型返回。如何在c中安全地从一个双精度转换为十进制#
由于我无法控制的一些设计限制,这需要进行转换。转换为字符串不是问题。转换为double是因为MS文档中提到“[从十进制转换为双精度]可能会产生舍入误差,因为双精度浮点数的有效位数少于小数。”
作为双(或字符串),我们可以在任何计算完成后舍入到小数点后两位,那么做什么是“正确”的方式来做十进制转换,以确保在舍入之前我们不会失去任何精度?
根据MSDN,十进制的精度为28-29位,双精度为15-16。但是如果你只存储6-8位数字,那么我认为这个舍入不会影响你。这可以很容易地单元测试看到。 – nithins 2011-02-18 17:51:27