NET十进制精度损失

NET十进制精度损失

本文介绍了Json.NET十进制精度损失的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我反序列化十进制值时遇到问题.

I have an issue with deserializing decimal value.

JObject.Parse("{\"available\":8777.831438322572000}")

如果我在VS下的调试器中键入此代码,则结果为

If I type this code in VS under debugger the result is

"available": 8777.8314383225716

如果我尝试这个

obj.Value<decimal>("available")

结果为8777.83143832257

我在哪里错了?我应该使用哪种api方法来获得正确的结果?

Where am I wrong?What api methods should I use to get correct results?

推荐答案

JObject.Parse("{\"available\":8777.831438322572000}")的结果是double.第二条语句的结果为decimal.

The result of JObject.Parse("{\"available\":8777.831438322572000}") is a double. The second statement results in a decimal.

double具有浮点精度,不如decimal那样精确.

The double has floating point precision, which is not that precise as a decimal.

必读:为什么浮点数可能会失去精度

这篇关于Json.NET十进制精度损失的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-24 08:40