.NET舍入帮助

时间:2011-04-27 18:48:34

标签: .net double rounding

我有10个小数(双重类型)加起来1.我的客户想要在我们的网格中显示一个小数位并且我尝试使用十进制数据类型,Math.Round(Away和Even),但是我只是不能得到加起来为1(.98)的数字。我的数学技能缺乏,我无法弄清楚如何正确地做到这一点。任何帮助都会很棒!

0.429068150 0.222531293 
0.091098748 0.062586926
0.053546592 0.047983310
0.031988873 0.024339360
0.022948540 0.013908206

2 个答案:

答案 0 :(得分:2)

这些数字似乎与一个非常接近的东西相加。

如果我正确理解你,你想要将一堆数字用于显示目的,但仍然可以对它们进行数学运算并得到你未见过的结果。

所以要快速说明问题:1.5 + 2.5 = 4,而1 + 2 = 3.舍入改变了数字,这改变了结果。

你可以做的就是在你想要的网格中显示它们,但保留幕后数字的高保真(未接地)版本,然后对其进行总计。

答案 1 :(得分:1)

他们加起来为0.999999998000000。你可能正在寻找格式字符串。您可以在列的属性中设置它们。 (在不知道您正在使用什么的情况下,我无法进一步了解格式字符串的放置位置。)

double i = 0.42906815+0.222531293+0.091098748+0.062586926+0.053546592+0.04798331+0.031988873+0.02433936+0.02294854+0.013908206;
Console.WriteLine(string.Format("{0:N1}", Math.Round(i,1)));

打印1.0。请注意{0:N1}。那就是打印一个小数位的数字。