【问题标题】:Xamarin Foms UWP Release Mode double variable will not set to zeroXamarin Forms UWP 发布模式双变量不会设置为零
【发布时间】:2017-05-16 12:22:07
【问题描述】:

我有以下代码:

 public static MapSpan GetMapspan(List<Position> pobj_Positions, bool pb_IncludeCurrentLocation)
    {

        bool gotRect = false;
        double ld_north = 0;
        double ld_west = 0;
        double ld_south = 0;
        double ld_east = 0;
        double ld_workLatitude = 0;
        double ld_workLongitude = 0;
        double ld_centerLatitude = 0;
        double ld_centerLongitude = 0;
        Position lobj_CenterPosition;
        MapSpan lobj_MapSpan = null;

        try
        {

            ld_north = 0;
            ld_west = 0;
            ld_south = 0;
            ld_east = 0;
            ld_workLatitude = 0;
            ld_workLongitude = 0;
            ld_centerLatitude = 0;
            ld_centerLongitude = 0;

            if (pobj_Positions.Count > 0)

所以我的挑战是,在我的 Xamarin Forms UWP 应用程序的发布模式下,当我到达下面看到的 if 语句时,ld_north 和 ld_east 实际上并不像它们应该的那样为零。您可以在我的监视窗口中查看它们的实际值:

ld_north    6.237901216026427E-299  double
ld_west     0.0                 double
ld_south    0.0                 double
ld_east     7.8983449250911225E-299 double

知道如何解决这个问题以及为什么会这样吗?

【问题讨论】:

    标签: uwp xamarin.forms double release


    【解决方案1】:

    我以前没有见过 0 有这个问题,但是对于其他数字,double 不能准确存储它的值,可能存在舍入错误。如您所见,它具有 E-299,这意味着它的值非常小。

    如果您需要精度,请移动到小数。

    或者,如果你继续使用双打,你可以检查它是否为零

    if (value < 0.00001 && value > -0.00001)
    

    然后您开始通过大于或小于而不是绝对值来检查事物以解决这些问题。

    另一个问题可能是监视窗口有问题,即使它实际上为零,也很难说,但肯定是系统中的错误。正如我所提到的,我以前从未见过 0 的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 2019-01-15
      • 2012-01-01
      • 2018-09-07
      • 2019-01-14
      • 1970-01-01
      • 2017-11-26
      相关资源
      最近更新 更多