【问题标题】:JSON converter converting double value to scientific notationsJSON转换器将双精度值转换为科学记数法
【发布时间】:2015-05-12 08:14:17
【问题描述】:
在我的 Web Api 控制器中,我将我的模型发送到 Angular.js 前端,其中我得到了一个可以为空的双精度字段类型。该字段的值为 0.0000001。
现在,当我在控制器级别检查该值时,它显示为 0.0000001(正是我想要的),但在前端是 javascript(Angular.js),它被转换为 1E-07,这是一个科学记数法那个。
现在无论如何我可以在我的控制器级别上解决这个问题,而无需在前端使用任何东西。我可以在前端级别轻松解决此问题,但在控制器级别找不到任何东西。
【问题讨论】:
标签:
c#
asp.net-mvc
angularjs
asp.net-web-api
【解决方案1】:
如果是前端以不同的方式格式化它,你将如何在控制器中解决它?
从计算机的角度来看,数字是一样的,变化只是在可视化格式上。
如果您的前端出于某种原因更改了格式,请务必更改它。
唯一的解决方案,如果你不需要在前端把它当作一个数字,那就是把它转换成格式化的字符串,然后把值作为字符串发送到前端。但是,如果它在客户端被视为数字,您将丢失格式。请记住,JavaScript 是动态类型的。
【解决方案2】:
是的。您可以在控制器级别修复此问题,而无需在前端使用任何东西。
在将结果发送到前端之前解析您的结果。像这样
`使用 System.Web.Script.Serialization;
..
JavaScriptSerializer 序列化器 = new JavaScriptSerializer();
objectString = serializer.Serialize(new MyObject());`
【解决方案3】:
我非常同意@JotaBe:这显然不是控制器的责任。
无论如何,如果您想这样做,您可以:在 ASP.Net Web API 中,JSON 序列化由 Json.NET 执行。该库提供了多种控制流程的方法,其中之一是编写客户转换器并通过属性see here 对其进行配置。