避免指数值
Avoid exponential values
我在使用网络服务中的 dto 时遇到了一些问题。我遇到的问题是一个数字,来自数据库的十进制格式,但是当我使用 web 服务时,数字显示为 -3.2E-05
c#代码中dto的结构为:
var dto = new RentabPorInstrumentoDTO
{
RentabilidadHist = p.RENTABOLIDAD_HIST,
RentabilidadHist = Convert.ToDouble(p.RENTABOLIDAD_HIST)
数据库中的数字是:-0.000032
在 DTO 上收到的号码是:-0.000032
我最诚挚的问候!
您在 class 中将列定义为 Double,并且可能也在您的数据库中。双打是浮点数,会做这样的事情:浮点数不准确(奇怪但真实!)。将 class 中的成员重新定义为 decimal,将列重新定义为 decimal(18, x),其中 x 是您想要的小数位数,它会更容易预测。
请注意,-3.2E-05 是 -0.000032 的科学记数法:它们实际上是相等的,因此您在这里实际上没有问题,尽管使用浮点数您可能最终会得到一个。
我在使用网络服务中的 dto 时遇到了一些问题。我遇到的问题是一个数字,来自数据库的十进制格式,但是当我使用 web 服务时,数字显示为 -3.2E-05
c#代码中dto的结构为:
var dto = new RentabPorInstrumentoDTO
{
RentabilidadHist = p.RENTABOLIDAD_HIST,
RentabilidadHist = Convert.ToDouble(p.RENTABOLIDAD_HIST)
数据库中的数字是:-0.000032 在 DTO 上收到的号码是:-0.000032
我最诚挚的问候!
您在 class 中将列定义为 Double,并且可能也在您的数据库中。双打是浮点数,会做这样的事情:浮点数不准确(奇怪但真实!)。将 class 中的成员重新定义为 decimal,将列重新定义为 decimal(18, x),其中 x 是您想要的小数位数,它会更容易预测。
请注意,-3.2E-05 是 -0.000032 的科学记数法:它们实际上是相等的,因此您在这里实际上没有问题,尽管使用浮点数您可能最终会得到一个。