ASP.NET MVC或JS将数字除以1,000并围绕它们

时间:2015-06-26 20:22:44

标签: c# asp.net asp.net-mvc internet-explorer rounding

这是一个尴尬的错误,我们已经在ASP.NET MVC 3应用程序中使用了。我认为它很可能是我们代码中的一些错误(它仍然可能存在),但我无法找到任何迹象。

这里发生了什么:

当用户在特定表单中输入数字N时,该表单中的不同字段,以便N > 1,000将数字除以1,000并四舍五入到最接近的整数。例如,35,686将成为36,但35,423将成为35.到目前为止,这只发生了两次,在两周之内,尽管用户每天都使用这种特殊形式。再次输入数字,接管正确的数字。

细节:

用户键入,例如35686(没有任何分隔符),在大约100个案例中,36中存储35686而不是35.686。最奇怪的是,它变得圆润。通常会输出一个双重值,例如35只会截断十进制数字并导致35.686

由于我们的用户大多使用我们认为的德国文化,有人写了.,是德国千位分隔符)并且它被转换为整数。但是,当我们测试它时,无论我们使用何种语言文化(英语和德语)以及任何分隔符(.Math.Round),这都不会导致四舍五入(或者它会)。我们总是从服务器上得到一个异常,表示该号码应该没有分隔符。

检查应用程序时,C#代码中不会出现Roundround0.5,也不会出现JS代码。我也找不到任何+0.5(将double舍入到最接近的整数的最简单方法是hns = [[a,b,c],[c,b,a],[b,a,c]]并转换为int)。我也没有找到任何除法。

我们可能错过了什么吗?我们的用户使用的浏览器是带有Windows 7的IE 11.该应用程序在IIS上最新版本的.Net上运行在Windows Server 2012上。你有什么想法吗?

澄清:

正如我所说,到目前为止,错误只发生了两次,我们无论如何都无法重现它。虽然JavaScript使用数字来计算和显示表单旁边的其他值,但表单本身最终只是作为HTML提交。这个表单周围的整个代码非常大> 1k LOC,因为我们无法重现它,所以我们无法共享可能有助于发现错误的特定部分。但是在C#类中,类型是整数。那么转换应该发生在浏览器或中间件的某个地方?

0 个答案:

没有答案