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);
感谢大家!洛伦佐
嗨,问题解决了
感谢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);
感谢大家!洛伦佐