asp.net mvc-C#dll中的C#双值丢失小数位置

本文关键字:小数 位置 net mvc-C#dll 中的 asp | 更新日期: 2023-09-27 18:01:12

这确实是我第一次问这个问题,但我面临着一个问题,我确信我错过了一些简单的东西。

我编写了一个C#类库,其中包含一个返回List>的函数。如果从我创建的用于测试DLL的控制台应用程序中使用该函数,则该函数本身工作良好。功能的结束部分是:

  /* Sorto i risultati in base al ranking */
        List<KeyValuePair<string, double>> SortedList = new List<KeyValuePair<string, double>>(matchIndexList_rank);
        SortedList.Sort(delegate(KeyValuePair<string, double> firstPair,
            KeyValuePair<string, double> secondPair)
            {
                return (-1) * firstPair.Value.CompareTo(secondPair.Value);
            }
        );
        stopWatch.Stop();
        response.success = true;
        response.executionTime = stopWatch.ElapsedMilliseconds;
        response.resultListKVPStrDoub = SortedList;
        return response;

例如,在这里,列表中第一个值的双部分是15.5796761265999(对不起,还不能包括图片!(

如果我在ASP中包含DLL,问题就会出现。NET MVC应用程序。在这种情况下,返回List>的双部分,不包含小数部分。

与上面给出的值相对应的值返回为155796761265999.0

这里有一小段代码,我得到了错误的返回值:

        searchEngine.Core.search search = new searchEngine.Core.search(HttpContext.Current.Server.MapPath("~/index_" + oIdentity.comapanyId.ToString()));
        searchEngine.Core.genericResponse response = search.doSearch(searchStr);
        double maxScore = response.resultListKVPStrDoub.Count > 0 ? response.resultListKVPStrDoub[0].Value : 1;

在示例中,maxScore得到155796761265999.0值,但列表中的其他值也会遇到同样的问题。

如果我从两个方面检查变量,Visual Studio 2013会声明该类型实际上是一个double。

两个项目都是在同一台机器上开发的,这也是我的测试环境。我用。两个项目上的Net Framework 4.0和所有构建参数似乎在两个项目中都是相等的。

我确信我错过了一些简单的东西,但就是得不到。如果有任何帮助,我将不胜感激。

感谢

洛伦佐

嗨,问题解决了(很抱歉,我还不能在发布后8小时内回答自己的问题(

感谢Radu Pascal让我走上了正确的道路:通常我总是在解决方案中添加一个类库来调试它,但在这种情况下,我为另一个项目开发了它,它运行良好,所以我忽略了obviuos。

多亏了Marc Gravell,他发现了这个问题:即使我在搜索引擎的底部忘记了它,也有一个基于文件的索引。我从文本中解读自己的价值观,也有错误阅读的地方。

真正的神秘之处在于,控制台应用程序中用于测试甚至在另一个ASP上使用的DLL是相同的。NET MVC在同一台机器上运行良好。我使用double.parse而不是Convert求解。ToDouble和强加不变的文化。

idfDict[idItem] = double.Parse(s.Split('|')[1], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);

感谢大家!洛伦佐

asp.net mvc-C#dll中的C#双值丢失小数位置

嗨,问题解决了

感谢Radu Pascal让我走上了正确的道路:通常我总是在解决方案中添加一个类库来调试它,但在这种情况下,我为另一个项目开发了它,它运行良好,所以我忽略了obviuos。

多亏了Marc Gravell,他发现了这个问题:即使我在搜索引擎的底部忘记了它,也有一个基于文件的索引。我从文本中解读自己的价值观,也有错误阅读的地方。

真正的神秘之处在于,控制台应用程序中用于测试甚至在另一个ASP上使用的DLL是相同的。NET MVC在同一台机器上运行良好。我使用double.parse而不是Convert求解。ToDouble和强加不变的文化。

idfDict[idItem] = double.Parse(s.Split('|')[1], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);

感谢大家!洛伦佐