我正在使用.Net Web API返回双倍的信息。在我返回之前,我将这些双打圈数保留到小数点后两位。当我打印它们时,我得到(f.e):145,92。非常棒。但是,当我返回双,我的JSON响应与这样的双重创建:.NET Web API返回大量小数位后的双精度值
“小时”:145.92000000000002
什么是创造这一问题的任何想法?
我的舍入函数为:
public double ApplyRounding(double value, int digits)
{
decimal decValue = (decimal)value;
// First round is to fix rounding errors by changing things like 0.99499999999999 to 0.995
decValue = Math.Round(decValue, digits + 5, MidpointRounding.AwayFromZero);
decValue = Math.Round(decValue, digits, MidpointRounding.AwayFromZero);
return (double)decValue;
}
感谢
这是C#如何解释'double'。对于小数,'double'不具有与'float'相同的浮点精度。使用'float'来更精确地表示你的十进制数。 –
@AlexBarac你的意思是'decimal'而不是'float'吗? – oleksii
@oleksii不......我曾经工作过一个伪随机生成器程序,由于double操作创建的舍入问题,这个程序的执行效率很差,因为double操作和float操作都非常好,这似乎是OP的问题 –