Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#json是否转换浮动值?_C#_Json_Floating Point - Fatal编程技术网

C#json是否转换浮动值?

C#json是否转换浮动值?,c#,json,floating-point,C#,Json,Floating Point,我正在使用一个使用JSON的Web API,其中我要带回的对象的属性之一是FLOAT类型 将数据插入数据库后,我开始注意到一些奇怪的结果。我刚刚浏览了代码,可以看到float属性“PERSUNQ”的值是:124736684.0 然而,当我使用JSONConvert触摸JSON数据时,该值神奇地变为:124736688.0 GRSAPIData = client.DownloadString(GRSURL); <!--- value is correct Rootobject ro

我正在使用一个使用JSON的Web API,其中我要带回的对象的属性之一是FLOAT类型

将数据插入数据库后,我开始注意到一些奇怪的结果。我刚刚浏览了代码,可以看到float属性“PERSUNQ”的值是:124736684.0

然而,当我使用JSONConvert触摸JSON数据时,该值神奇地变为:124736688.0

 GRSAPIData = client.DownloadString(GRSURL);   <!--- value is correct

 Rootobject root = (Rootobject)JsonConvert.DeserializeObject<Rootobject>(GRSAPIData); <-- value is magically changed

GRSAPIData=client.DownloadString(GRSURL) 一个
float
只有7位精度-这导致了您看到的问题。您可以在根本不涉及JSON的情况下看到这一点:

using System;

class Program
{
    static void Main(string[] args)
    {
        float f = 124736684.0f;
        Console.WriteLine(f.ToString("r")); // Round-trip
    }
}
输出:

124736688
基本上,最接近124736684的可表示的
float
值是124736688


看起来您可能应该改为使用
double
,或者可能使用
decimal
,具体取决于值的含义。

您可以上传JSON和Rootobject类吗?请展示一个简短但完整的程序来演示此问题。我怀疑数据库是否与此相关。是的,问题是我不能发布任何太详细的内容,因为这是一个政府项目,但我会看看我能做些什么:\天哪,这太烦人了。来自供应商的数据模式将该字段作为浮点。我想我得试着把这个换成一个替身。真不敢相信我没看到。谢谢你的回答。