舍入到小数点后两位c#

时间:2015-06-26 02:50:34

标签: c# rounding

目前在我的c#代码中有一个工作四舍五入的模型,并且完美地将具有超过2个小数位的数字舍入到小数点后两位,这很好。但是,当我让我们说double value = 100.6时,我将其放入double dollar_value = Math.Round(value, 2),它仍然返回为100.6。

我想知道是否有办法将1位小数值转换为2位小数?

4 个答案:

答案 0 :(得分:3)

数字不会以额外的零存储(因为这样做会浪费内存,无论是否有数字都是相同的)。为了以这种方式表示数字,您需要显示或将其存储为字符串。

string str = value.ToString("#.00", CultureInfo.InvariantCulture);

现在str总是有2位小数。

答案 1 :(得分:1)

我不知道C#方法,但在C ++中我会使用以下两种方法之一:

double value = 23.666666 ; // example
value = 0.01 * floor ( value * 100.0 ) ; // There's a "floor" function in C# too

^见https://msdn.microsoft.com/en-us/library/e0b5f0xb(v=vs.110).aspx

或者

double value = 23.666666 ; // example
value = 0.01 * (double) ( (int)(value*100.0) ) ;

或者

double value = 23.666666 ; // example
value = 0.01 * double ( int ( value*100.0 ) ) ; // same as previous, but more C++ like

如果您希望“打印两位小数的美元金额”,其他答案可能会更好。但是,如果要将数字转换为内部使用,这是一种方法。

答案 2 :(得分:0)

如果希望字符串表示形式有两个小数点,请使用: yourNumber.ToString ("0.00");

数字本身始终存储为~29位数字,无论其字符串表示如何。

答案 3 :(得分:0)

您的值只需在显示时进行格式化 - 例如value.ToString("N2")会将其转换为带有两位小数的字符串。查看MSDN上的Standard Numeric Format Strings以查看更广泛的格式字符串列表。

此外,我只会在您准备好向用户显示值时将其转换为字符串,如果您在方法之间传递或计划执行任何操作,我会将其保留为数字类型(例如,双倍)进一步计算。否则,您将不必要地多次将值与字符串进行转换。