在Silverlight中将数字四舍五入到最接近的百分位数

时间:2012-01-17 09:01:18

标签: silverlight windows-phone-7

将数字舍入到最接近的百分位数的最佳方法是什么?

例如,如果我有100/3,那将等于33.333333333 ...我想舍入到最接近的百分之一,这样我就有33.34而不是33.33。

目前我这样做: Math.Ceiling(numberToRound * 100)/ 100;

这似乎有效,但这是一种正常的做法吗?

这是在使用C#的Silverlight Windows Phone应用程序中。

4 个答案:

答案 0 :(得分:1)

如果要舍入到较高的数字,请使用Math.Ceiling。如果要舍入到较低的数字,请使用Math.Floor

缺点:这两个函数不会将数字作为参数,Math.Round也是如此。为了解决这个问题,你可以先将你的数字乘以它,然后再将其分开。

例如,要保留两位小数并四舍五入到更高的数字:

var result = Math.Ceiling(number * 100) / 100;

答案 1 :(得分:1)

  <33> 33.33比33.34更接近100/3你是什么意思是最接近的百分之一?

     

抱歉,我的措辞可能太模糊了。我想整理一下   最接近百分之一,以便数字总是上升而不是下降。   例如33.331,33.332,33.333,33.334,33.335,33.336 ......全部   最高为33.34。

如果想要将数字四舍五入,那么使用Ceiling绝对没问题。

如果您只想显示最大数字数字,则应格式化输出而不是舍入。

在这种情况下,我会在Silverlight中使用包含正确转换的Value转换器。

答案 2 :(得分:0)

使用Math.Round:http://msdn.microsoft.com/en-us/library/zy06z30k(v=vs.95).aspx

Math.Round(33.3333D,2)将产生33.33。

答案 3 :(得分:0)

你接近我听起来很好 - 但我确实想知道你为什么要这样做?通常,只有在显示数字时才会对数字进行舍入,否则可能会在您的算法中引入舍入误差。如何使用字符串格式呢?

double myNumber = 100.0 / 3.0;
string myNumberFormatted = myNumber.ToString("N2"); // = "33.34"